您的位置:首页 > 编程语言 > C语言/C++

C语言求素数方法

2019-10-14 23:20 183 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_44912697/article/details/102558863

C语言求素数方法

确定性算法
缺点:慢

  1. 试除法
//1.试除法

int is_prime(int n)
{
int i;

if(n<=1)
return 1;    //1表示素数

for(i = 2; i < n; i++)
//	for(i = 2; i*i <n;i++)   //改进版
{
if(n%i == 0)
return 0;
}
return 1;
}
  1. Eratosthenes求素数方法
//2.Erathosthens求素数方法
#denfine MAXNUM 1000
int main()
{
int i ,j;
int prime[MAXNUM+1];     	//定义保存素数的数组
//初始化数组
for(i = 2;i <= MAXNUM;i++)
{
prime[i] = 1;
}

for(i = 2;i*i <= MAXNUM;i++)
{
if(prime[i] )
{
for(j = i*2; j*j <=MAXNUM;j++)
{
if(!prime[j] )  continue;   //判断是否是合数
if(j%i == 0)   prime[j]=0;  //判断质因数是否为i,即是否是素数
}
}
}

int c=0;
for(i = 2; i < MAXNUM;i++)
{
if(prime[i])
printf("%d",i);
c++;
}
printf("共有%d个素数",c);

}

随机算法< 3ff7 /strong>
优点:快
涉及较多数学定理,数学性较强
详见blog素数测试与随机算法

参考资料:《程序员的数学思维修炼》

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: