且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

筛选法求质数

更新时间:2022-06-17 00:23:43

//1n之间的所有质数
/*=======================================================================================
思路:

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; }