蒙特卡罗行概率算法 素数测试问题算法中为什么是在每做一次乘法之后对n
发布网友
发布时间:2022-04-24 13:31
我来回答
共1个回答
热心网友
时间:2023-10-14 13:01
先来一种比较快速的素数筛选法,这是一种非常高效的筛法,原理的话,你得看下数论方面的书籍#include<stdio.h>
#include<string.h>
#define MAXN 100int flag[MAXN+1];int main()
{
int i,j;
memset(flag,0,sizeof(flag));
for(i=2;i<=MAXN;i++)
{
if(!flag[i])
for(j=i*i;j<=MAXN;j=j+i)
if(!flag[j])
flag[j]=1;
}
for(i=2;i<=MAXN;i++)
if(!flag[i])
printf("%d ",i);
printf("\n");
return 0;
}下面的用的是最普通的算法#include<stdio.h>
#include<math.h>
#define MAXN 100int main()
{
int i,j;
for(i=2;i<=MAXN;i++)
{
if(i==2||i==3||i==5)
printf("%d ",i);
else
{
for(j=2;j<=i;j++)
{
if(i%j==0)
break;
}
if(j==i)
printf("%d ",i);
}
}
printf("\n");
return 0;
}