1137C/C++經典程式訓練7---求某個範圍內的所有素數
阿新 • • 發佈:2019-01-05
題目描述
求小於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; }