【发布时间】:2012-03-21 13:10:27
【问题描述】:
如何编写一个程序来找到给定数字后的 n 个素数? 例如100 后的前 10 个素数,或 1000 后的前 25 个素数。 编辑: 下面是我尝试过的。我是这样得到输出的,但是我们可以在不使用任何素数测试功能的情况下做到这一点吗?
#include<stdio.h>
#include<conio.h>
int isprime(int);
main()
{
int count=0,i;
for(i=100;1<2;i++)
{
if(isprime(i))
{
printf("%d\n",i);
count++;
if(count==5)
break;
}
}
getch();
}
int isprime(int i)
{
int c=0,n;
for(n=1;n<=i/2;n++)
{
if(i%n==0)
c++;
}
if(c==1)
return 1;
else
return 0;
}
【问题讨论】:
-
你尝试编译这个吗?我的猜测是否定的。一些备注:不要使用break而是在for循环中添加结束条件,第3行(isprime(i)是函数调用但函数本身没有实现,应该有一个if之前,count没有初始化不需要,因为 i 是计数器, printf 应该说明要打印的类型。由于这是家庭作业,您应该添加该标签。
-
printf()需要一个整数的格式规范,最后可能还有一个换行符。
标签: c primes sieve-of-eratosthenes