判定一个素数:
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
#define N 100000
bool 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 100000
bool 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;
}这其中观看了大神的代码写的
本文介绍了一种使用筛法高效判断素数的方法,并提供了两种实现方式:一种用于判定单个数是否为素数;另一种用于找出指定范围内所有素数。通过C语言实现,包括初始化素数数组、筛除合数等步骤。
2046

被折叠的 条评论
为什么被折叠?



