素数的判断

xiaoxiao2021-02-28  25

素数:首先,保存最小素数2,然后,从3开始,在奇数中寻找素数。用不大于该奇数一半的所有奇数去整除它,如果都除不尽,该奇数是素数。

曾称质数。一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。如2,3,5,7,11,13,17…。

埃氏筛素数

/*8 20 42 0 Sample Output 8 = 3 + 5 20 = 3 + 17 42 = 5 + 37*/ #include<iostream> #include<cstring> #include<cmath> using namespace std; #define M 1000005 int vis[M]; //当有大数组时,记得用define int main() { int n; int m=sqrt(M+0.5);//打表一定要要在循环外,否则会超时 memset(vis,0,sizeof(vis));//vis[i]=0表示素数 for(int i=2;i<=m;i++) { if(!vis[i]) for(int j=i*i;j<=M;j+=i) vis[j]=1; } int flag=0; while(cin>>n) { if(n==0) return 0; for(int t=2;t<=n;t++) { if(vis[t]==0) { if(vis[n-t]==0)//要两个数的和为该数,就可以用该数来减,这样判断,我开始没想到 { cout<<n<<" = "<<t<<" "<<"+ "<<n-t<<endl; flag=1; break; } } } if(flag==0) cout<<"Goldbach's conjecture is wrong."<<endl; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2954219.html

最新回复(0)