1314 - C语言程序设计教程(第三版)课后习题7.1
用筛法求N之内的素数。
Input
N
Output
0~N的素数
Examples
Input
100
Output
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
Hint
数组大小动态定义?函数?
Solution C
#include<stdio.h> #include<math.h> int main() { int i,n,k; int a[1000]={0}; scanf("%d",&n); for(i=2;i<=n;i++) { if(a[i]!=0) continue; k=i+i; while(k<=n) { a[k]=1; k+=i; } } for(i=2;i<=n;i++) { if(a[i]==0) printf("%d\n",i); } return 0; }
Solution C++
#include<iostream> #include<cmath> using namespace std; int a[10000]; int main() { int n; cin>>n; int t=sqrt(n); for (int i=1; i<=n; i++) a[i]=1; for (int i=2; i<=t; i++) //筛选法求素数表 if (a[i]) for (int j=2*i; j<=n; j+=i) a[j]=0; for (int i=2; i<=n; i++) if (a[i]) cout<<i<<endl; return 0; }
Hint
数组大小动态定义?函数?