题目描述
求小于n的所有素数,按照每行10个显示出来。
输入
输入整数n(n<10000)。
输出
每行10个依次输出n以内的所有素数。如果一行有10个素数,每个素数后面都有一个空格。
示例输入
100
示例输出
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
#include<stdio.h>
#include<math.h>
void main()
{
int m,k,n,i,count=0;
scanf("%d",&n);
if(n<=10000)
{
for(m=2;m<=n;++m)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>=k+1)
{
printf("%d ",m);
count++;
if(count%10==0)
printf("\n");
}
}
printf("\n");
}
}
素数筛
#include<stdio.h>
#include<string.h>
int main()
{
int i, j,m,e;
int pi = 0;
int primes[1000],flag[1000];
memset(flag,0 ,sizeof(flag));
scanf("%d",&m);
for (i = 2; i < m; i++)
{
if (!flag[i])
primes[pi++] = i;
for (j = 0; (j < pi) && (i * primes[j] < m); j++)
{
flag[i * primes[j]] = 1;
if (i % primes[j] == 0)
break;
}
}
e=0;
for(i=0; i<pi; i++)
{
printf("%d ",primes[i]);
e++;
if(e%10==0)
printf("\n");
}
return 0;
}