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

#include<stdio.h>
int f(int n)
{int i;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;}
main()
{int i;
for(i=2;i<=1000;i++)
if(f(i)==1)
printf("%d ",i);}
这个程序哪有问题

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

应改为:

#include<stdio.h>

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);

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-19
这个程序没有问题,我在自己的机子上通过编译了;唯一可以改的小地方是,如果为了让程序运行速度更高,偶数是不用判断的,所以N可以从3开始而且每次加2;你说有问题是你的自己上无法编译还是什么情况。
第2个回答  推荐于2018-04-05
你的程序是有问题的,因为函数的返回值是for循环的最后一次确定的,在其他的时候n%i==0并没有影响返回值
应改为:
#include<stdio.h>

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;
}本回答被网友采纳
第3个回答  2010-06-15
没有问题,完全正确。
只是小细节问题,但不影响程序执行结果。
if(n%i==0)//改一下这里可以提高效率
{return 0;
break;
}

main前最好加个void
相似回答