C语言如何编写1到1000内超级素数

2024-12-19 14:37:29
推荐回答(4个)
回答1:

可以改的地方是,如果为了让程序运行速度更高,偶数是不用判断的,所以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);

参考资料来源:百度百科-超级素数

回答2:

这个程序没有问题,我在自己的机子上通过编译了;唯一可以改的小地方是,如果为了让程序运行速度更高,偶数是不用判断的,所以N可以从3开始而且每次加2;你说有问题是你的自己上无法编译还是什么情况。

回答3:

你的程序是有问题的,因为函数的返回值是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;
}

回答4:

没有问题,完全正确。
只是小细节问题,但不影响程序执行结果。
if(n%i==0)//改一下这里可以提高效率
{return 0;
break;
}

main前最好加个void