C语言:输出1-1000素数;

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:54:17
为什么得不到期望的结果呢。。
是不是算法错了。
#include "stdio.h"
void main()
{int f(int n);
int i,k=0;
for(i=1;i<=1000;i++)
{
printf("%5d",f(i));
k++;
if(k%15==0)
printf("\n");
}
getch();
}
int f(int n)
{
int j;
for(j=2;j<=n-1;j++)
if(n%j==0)
break;
if(j>=n)
return (n);
}

#include "stdio.h"
void main()
{int f(int n);
int i,k=0,s;
for(i=1;i<=1000;i++)
{
s=f(i);
if(s)
printf("%5d",s);
k++;
if(k%15==0)
printf("\n");
}
}
int f(int n)
{
int j;
for(j=2;j<=n-1;j++)
if(n%j==0)
return 0;
if(j>=n)
return (n);

}
随便改了一下, 不知道是否符合要求. 你的程序,在调用函数后,返回到主函数没有得到判断.所以得不到想要的结果.

函数f有问题啊,如果是素数会返回,但不是素数的话,没有返回值啊。
建议
修改如下:
1. 函数f中
if(j>=n)
return n;
else
return 0;
2. 函数main的循环中
int result = f(i);
if( result )
printf("%5d",result);

#include "stdio.h"
void main()
{int f(int n);
int i,k=0;
for(i=1;i<=1000;i++)
{if(!f(i))
{printf("%5d",i);
k++;
if(k%15==0)
printf("\n");
}
}
getch();
}
int f(i