C语言中,怎么高效判别素数?循环2到根号的方法就不用说了⊙﹏⊙,谢了~

2025-04-28 19:23:08
推荐回答(4个)
回答1:

老实说,2到10,000,000是个很小的区间,对于计算机编程而言几乎不算什么。预先生成一个素数表,然后查表即可,不需要动态写算法去验证。
在你程序开始时,采用打洞的方法首先建立素数表,然后对于每组输入查表即可。
所谓打洞:就是对于所有的数
首先把2的倍数去掉
然后把3的倍数
然后把5的倍数
直到所有的数的倍数都去掉
至于具体怎么写,就看你自己水平了

回答2:

去搜索一个算法交MR判素,全名miller-robin算法,这个算法是基于费马小定理的素数测试方法。
它适用于对于一些单独的数进行素数测试。

至于筛法,搜一下就找到算法了,筛法适用于求n以内的所有素数~

望采纳~

回答3:

//楼上提到的筛选法求1-100之间的素数。
#include
#include
#define N 101
void main()
{ int i,j,line,a[N];
for (i=2;i for (i=2;i for (j=i+1;j {if(a[i]!=0 && a[j]!=0)
if (a[j]%a[i]==0)
a[j]=0; }
printf("\n");
for (i=2,line=0;i { if(a[i]!=0)
{ printf("%5d ",a[i]);
line++; }
if(line==10)
{ printf("\n");
line=0; }
}
}

回答4:

筛法求质数
自己上网去搜