C语言求a-b之间的所有素数

#include<stdio.h>
int f(int x);
void main()
{
int a,b,i;
printf("请输入两个正整数:\n");
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
printf("%d\n",f(i));
}
int f(int x)
{
int i;
for(i=2;i*i<=x;i++)
if(x%i==0)
break;
if(i*i>x)
return x;
}
输出的结果有问题?程序哪里需要改动?

你的函数f是用来判断x是否素数的,所以你最后
if (i*i >x)
return x;
else
return 0;
还应该有个else来返回x不是素数的情况。
然后再main里面判断f的返回进行输出:
for(i=a;i<=b;i++)
if (f(i))
printf("%d\n",f(i));
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-17
还是你的那个警告,如果i*i<x,f(x) 不知道返回何值,便出现错误

#include<stdio.h>
int f(int x);
void main()
{
int a,b,i;
printf("请输入两个正整数:\n");
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
{
if(f(i)!=0)
printf("%d\n",f(i));
}
}
int f(int x)
{
int i;
for(i=2;(i*i)<=x;i++)
if(x%i==0)
break;
if((i*i)>x)
return x;
else
return 0;
}
第2个回答  2013-11-17
break改为return 0

for(i=a;i<=b;i++)
printf("%d\n",f(i));
改为
for(i=a;i<=b;i++)
{
if(f(i))
printf("%d\n",f(i));
}
相似回答