如何快速判定一个或多个素数

来源:互联网 发布:我是歌手网络同步直播 编辑:程序博客网 时间:2024/04/29 18:32

判定一个素数:

#include <stdio.h>#include <math.h>#include <stdbool.h>#define N 100000bool prime[N];int main(){int n;scanf("%d",&n);if(n==2){prime[n]=true;}for(int i=3;i<=n;i++){if(i%2==0){prime[i]=false;}else{prime[i]=true;}}for(int i=3;i<=sqrt(n);i++){if(prime[i]){for(int j=i+i;j<N;j+=i){prime[j]=false;}}}if(prime[n]){printf("Yes\n");}else{printf("No\n");}return 0;}
判定多个素数:

#include <stdio.h>#include <math.h>#include <stdbool.h>#define N 100000bool prime[N];int main(){int n;scanf("%d",&n);if(n==2||n==1){prime[n]=true;}for(int i=3;i<=n;i++){if(i%2==0){prime[i]=false;}else{prime[i]=true;}}for(int i=3;i<=sqrt(n);i++){if(prime[i]){for(int j=i+i;j<N;j+=i){prime[j]=false;}}}for(int i=1;i<=n;i++){if(prime[i]){printf("%d\n",i);    }}return 0;}

这其中观看了大神的代码写的

0 0