快速查找素数

xiaoxiao2021-02-28  32

我们以前判断素数是从2到这个数的平方根一直检查是否是素数。 #include<iostream> #include<cstring> #include<stack> #include<cstdio> using namespace std; int main() { int n,i,f=0; scanf("%d",&n); for(i=2;i<=sqrt(n);i++) { if(n%i==0) { f=1; break; } } if(f==1)printf("YES\n"); else printf("NO\n"); }

现在如果数很大的话我们可以把每个数的倍数去掉就行了,剩下的就全是素数。 #include<iostream> #include<stack> #include<cstring> #include<cstdio> int a[2000005]; using namespace std; int main() { int n,i,j; for(i=2;i<=2000000;i++) { if(a[i]==0) { for(j=i+i;j<=2000000;j+=i) { a[j]=1; } } } while(scanf("%d",&n)&&n!=0) { for(i=2;i<=n;i++) { if(a[i]==0)printf("%d ",i); } printf("\n"); } } 因为我们把所有的是倍数的数去掉了,所以剩下的就都是素数。
转载请注明原文地址: https://www.6miu.com/read-2626913.html

最新回复(0)