筛选法求质数
//求1到n之间的所有质数
/*=======================================================================================
思路:
n定义一个数组a[ ],假设其元素a[i]==0代表i是质数, a[i]==1代表i不是质数。
n输入n
n循环控制数组下标i从2到sqrt(n),假如i是质数,从数组中筛去i的倍数对应的元素,即把a[j]设置为1。(j=x*i,x>=2)
n输出数组中未被筛掉的元素,即a[i]≠0的i值。
=========================================================================================*/
#include<iostream> #include<cmath> using namespace std; int main() { int n,a[10000]={0},i,j; cin>>n; for(i=2;i<=sqrt(n);i++) { if(a[i]==0) { for(j=i*2;j<=n;j=j+i) { a[j]=1; } } } for(i=2;i<=n;i++) { if(a[i]==0) cout<<i<<" "; } return 0; }