筛法求素数是比较常用的求一段范围内素数的算法,其实也就是自己生成一段范围内的素数,即把这段范围内的所有的非素数
去除。其实代码还是比较简单的,思路也是比较简单的。
- #define MAX 10000
-
int gen_prime(int prime[], int flag[], int len)
-
{
-
int i,j;
-
memset(flag, 1, len);
-
for(i=2; i<=len/2; i++)
-
{
-
if(flag[i])
-
{
-
for(j=i<<1; j<=len; j++)
-
{
-
flag[j] = 0;
-
}
-
}
-
}
-
-
j = 0;
-
for(i=2; i<=len; i++)
-
{
-
prime[j++] = i;
-
}
-
-
return j;
-
}
flag数组是一个判断数组,而最终规定范围内的所有素数存放在prime数组。上述函数的返回值为prime数组的有效值的
数据的个数。
阅读(930) | 评论(0) | 转发(0) |