杭电ACM2012

杭电ACM2012函数调用怎么用?22分钟前提问者:守慧Angel|浏览次数:3次#include<stdio.h>#include<math.h>intfun(intb... 杭电ACM2012 函数调用怎么用? 22 分钟前 提问者: 守慧Angel
| 浏览次数:3次#include<stdio.h>
#include<math.h>
int fun(int b)
{
int a;
for(a=2;a<=sqrt(b);a++)
if(b%a==0)
return 0;
else
return 1;
}
int main()
{
int m,n,y,i,c;
while(scanf("%d%d",&m,&n)==2 && (m!=0 || n!=0))
{
c=0;
for(i=m;i<=n;i++)
{
y=i*i+i+41;
if(fun(y)==1)
c++;
}
if(c!=0)
printf("OK\n");
else
printf("Sorry\n");
}
}
展开
 我来答
wanglixin1001
2012-11-14 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:892万
展开全部
您的程序有什么问题?请说明一下。
更多追问追答
追问
除了输入0 0,都会输出OK。
我主要是不太会调用函数,想借这个题学习下,我是新生。刚学。
追答
函数调用没有问题的,如果一个数是合数,返回0,否则是质数,返回1.
您将代码里的逻辑改为if(fun(y)==0) c++;
因为如果是合数,c就加1,那么c!=0是,说明有合数,输出一个Sorry就可以了。
给您一个AC的代码看下:
# include
# include
int main()
{
int x,y,i,j,k,flag;
while(scanf("%d%d",&x,&y)!=EOF)
{
if(x==0&&y==0) break;
flag=0;
for(i=x;i<=y;i++)
{
j=i*i+i+41;
for(k=2;k<j;k++)
if(j%k==0)flag++;
}
if(flag!=0) printf("Sorry\n");
else printf("OK\n");
}
return 0;
}
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式