c语言求1-1000内素数问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 22:07:31
#include "stdio.h"
#include <math.h>
#define N 1000
main()
{
int fun(int);
int i,line=0;
for(i=1;i<=N;i++)
{
if(fun(i));
{
printf("%d ",i);
line++;
}
if(line%10==0)
printf("\n");
}
}
int fun(int n) /*判断是否为素数*/
{
int a,i,k;
if(n==1||n==2)
a=1;
else
{
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)
break;

}
if(i>=k+1)
a=1;
else
a=0;
}
return(a);
}
我检查了很多遍,发现没问题啊,为什么每次输出的都是1-1000所有的数啊?
帮帮忙,各位高手!

看看你有多粗心!!!!
if(fun(i));//看这里,看到什么没有,你多了一个分号
{
printf("%d ",i);
line++;
}

看到没有,if(fun(i));由于多了这个分号,所以不管fun(i)返回值是0还是1,都会执行下面的printf函数,所以就会出现输出全部的1000个数!!!

//program4.ccp
#include <iomanip.h>
void main()
{

const int n=1000;
int i=2,j,count=0;
int sieve[n+1];
for (j=1;j<n+1;j++) sieve[j]=j;
while (i<n+1)
{cout<<setw(5)<<sieve[i];
count++;
if(count%15==0 ) cout<<endl;
for(j=i;j<n+1;j+=i)
sieve[j]=1;
while(sieve[i]==1)i++;
}
}