杭电ACM2012素数判定,这个程序错在哪了?我觉得没啥问题啊
ProblemDescription对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。...
Problem Description
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。
Input
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
Output
对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。
Sample Input
0 1
0 0
Sample Output
OK
我的程序
#include<stdio.h>
main()
{int x,y,a,b,m,l,s;
while(scanf("%d%d",&x,&y)!=EOF)
{
if(x==0&&y==0) {break;}
a=x*x+x+41;
b=y*y+y+41;
m=a;
s=0;
for(;m<=b;m=m+1)
{
for(l=2;l<=m/2;l=l+1)
{
if(m%l==0)
{s=s+1;}
}
}
if(s==0) {printf("OK\n");}
if(s!=0) {printf("Sorry\n");}
}
} 展开
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。
Input
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
Output
对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。
Sample Input
0 1
0 0
Sample Output
OK
我的程序
#include<stdio.h>
main()
{int x,y,a,b,m,l,s;
while(scanf("%d%d",&x,&y)!=EOF)
{
if(x==0&&y==0) {break;}
a=x*x+x+41;
b=y*y+y+41;
m=a;
s=0;
for(;m<=b;m=m+1)
{
for(l=2;l<=m/2;l=l+1)
{
if(m%l==0)
{s=s+1;}
}
}
if(s==0) {printf("OK\n");}
if(s!=0) {printf("Sorry\n");}
}
} 展开
1个回答
展开全部
当x,y是0,1时,他要你查的是41和43,而不是41到43
这样改就行了,AC的了
#include<stdio.h>
main()
{int x,y,a,b,m,l,s;
while(scanf("%d%d",&x,&y)!=EOF)
{
if(x==0&&y==0) {break;}
s=0;
for(;x<=y;x++)
{
m=x*x+x+41;
for(l=2;l<=m/2;l=l+1)
{
if(m%l==0)
{s=s+1;}
}
}
if(s==0) {printf("OK\n");}
if(s!=0) {printf("Sorry\n");}
}
}
这样改就行了,AC的了
#include<stdio.h>
main()
{int x,y,a,b,m,l,s;
while(scanf("%d%d",&x,&y)!=EOF)
{
if(x==0&&y==0) {break;}
s=0;
for(;x<=y;x++)
{
m=x*x+x+41;
for(l=2;l<=m/2;l=l+1)
{
if(m%l==0)
{s=s+1;}
}
}
if(s==0) {printf("OK\n");}
if(s!=0) {printf("Sorry\n");}
}
}
追问
谢谢,果然AC了,可是我觉得题意貌似就是让求41~43啊,唉,算了,不纠结了,我觉得这个题出的有点歧义。
华芯测试
2024-09-01 广告
2024-09-01 广告
电学测试台是深圳市华芯测试科技有限公司的核心设备之一,它集成了高精度测量仪器与自动化控制系统,专为半导体芯片、电子元件及模块的电性能检测而设计。该测试台能够迅速、准确地完成电压、电流、电阻、电容及频率等关键参数的测试,确保产品质量符合行业标...
点击进入详情页
本回答由华芯测试提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询