求助.C中一个高效率的素数判定,出错!

来源:百度知道 编辑:UC知道 时间:2024/05/15 13:29:42
在一本书上看到过如下高效率的素数判定代码.但从编译到执行都没出错.就是最后啥都没显示出为.理论上应该输出100个素数啊..为什么呢.

#include <stdio.h>
void main()
{
int i,count=3,isprime=1,gap=2,maybeprime=5;int prime[99];
prime[0]=2;prime[1]=3;prime[2]=5;
while(count<99);
{
for(i=0;prime[i]*prime[i]<maybeprime && isprime;i++)
maybeprime+=gap;
gap=6-gap;
isprime=1;
if (maybeprime % prime[i]==0)
isprime=0;

if (isprime)
prime[count++]=maybeprime;

}
for(i=0;i<99;i++)
printf("%4d",prime[i]);

}

while(count<99);
这后面多了一个分号,所以死循环。
去掉分号就可以。
而且最好把printf("%4d",prime[i]);
换成printf("%6d",prime[i]);
显示会好看一点。

----------------
我仔细看了一下你的代码,这跟本不是高效判断素数程序,这个运行的结果是错的,它包含了一些不是素数的输出,还缺少了很多素数。试除法书上有更高效的代码,而且试除法对大素数是无用的,仍然太慢。