您的位置:首页 > 其它

数论-判断素数,输出素数,最短时间

2017-07-24 09:24 155 查看
判断一个数是不是素数:

#include<stdio.h>
#include<math.h>
int prime1(int x)//时间复杂度是O(√n)
{
if(x <= 1) return 0;
double n = x+0.5;
for(int i = 2; i <= sqrt(n); i++)
if(x%i == 0)
return 0;
return 1;
}
int prime2(int x)//时间复杂度是O(√n)
{
if(x <= 1) return 0;
for(long long int i = 2; i*i <= x; i++)
if(x%i == 0)
return 0;
return 1;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
prime1(a)?puts("YES"):puts("NO");
prime2(b)?puts("YES"):puts("NO");
return 0;
}


筛法求素数(线性筛法):
#include<stdio.h>
int array[100005];
int reserve[100005],t;
int main()
{
for(int i=2;i<100005;i++) array[i]=1;
for(int i=2;i<100005;i++) {
if(array[i]) reserve[t++] = i;
for(int j=0;j<t&&i*reserve[j]<100005;j++) {
array[i * reserve[j]]=0;
if(i % reserve[j]==0)
break;
}
}
for(int i=0;i<100;i++)
printf("%d ",reserve[i]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: