可以改的地方是,如果为了让程序运行速度更高,偶数是不用判断的,所以N可以从3开始而且每次加2;说有问题是你的自己上无法编译还是什么情况。
应改为:
#include
int prime(int n)
{
int i = 0;
for (i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
break;
}
}
if (i * i > n)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int i = 0;
for (i = 2; i <= 1000; i++)
{
if (prime(i)==1)
{
printf("%d ",i);
}
}
return 0;
}
扩展资料:
简单C语言算法:
/*TC2.0调试成功*/
#include "stdio.h"
#include "math.h"
/*判断是否为素数*/
int IsPrime(long number);
/*判断此数是否为超级素数函数*/
int IsSuperPrime(long number);
参考资料来源:百度百科-超级素数
这个程序没有问题,我在自己的机子上通过编译了;唯一可以改的小地方是,如果为了让程序运行速度更高,偶数是不用判断的,所以N可以从3开始而且每次加2;你说有问题是你的自己上无法编译还是什么情况。
你的程序是有问题的,因为函数的返回值是for循环的最后一次确定的,在其他的时候n%i==0并没有影响返回值
应改为:
#include
int prime(int n)
{
int i = 0;
for (i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
break;
}
}
if (i * i > n)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int i = 0;
for (i = 2; i <= 1000; i++)
{
if (prime(i)==1)
{
printf("%d ",i);
}
}
return 0;
}
没有问题,完全正确。
只是小细节问题,但不影响程序执行结果。
if(n%i==0)//改一下这里可以提高效率
{return 0;
break;
}
main前最好加个void