1314 - C语言程序设计教程(第三版)课后习题7.1
时间限制 : 1 秒
内存限制 : 128 MB
用筛法求N之内的素数。
题目输入
N
题目输出
0~N的素数
输入/输出样例
输入格式
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
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; }
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; }
Python解答
# coding=utf-8 n=int(input()) a=[1]*(n+1) for i in range(2,n+1): if a[i]: j=i*2 while j<n+1: a[j]=0 j+=i for i in range(2,n+1): if a[i]: print(i)