杭电ACM2012
#include#includeintmain(){intn,x,y,i,sum,k,c;while(scanf("%d%d",&x,&y)!=EOF){if(x==0&...
#include#includeint main(){ int n,x,y,i,sum,k,c; while(scanf("%d %d",&x,&y)!=EOF) { if(x==0&&y==0) break; k=0; for(i=x;i<=y;i++) { c=0; sum=i*i+i+41; for(n=2;n<=sqrt(sum);n++) { if(sum%n==0) c++; } k++; } if(k==(y-x+1)&&c==0) printf("OK\n"); else printf("Sorry\n"); } return 0;}总是0_0_10181405_15061.cpp0_0_10181405_15061.cpp(16) : error C2668: “sqrt” : 对重载函数的调用不明确 \include\math.h(626): 可能是“long double sqrt(long double)” \include\math.h(578): 或 “float sqrt(float)” \include\math.h(200): 或 “double sqrt(double)” 试图匹配参数列表“(int)”时这个错误
展开
1个回答
展开全部
楼主代码写好点; 前面
#include<stdio.h>
#include<math.h>
然后你的k在这道里面没意义,c赋初值应该在k的那个位置,才能判断X到Y所有的值域符合素数,像你的那样只能判断最后一个数字。这是在你的基础上改的代码。
#include<stdio.h>
#include<math.h>
int main()
{
int n,x,y,i,sum,k,c;
while(scanf("%d %d",&x,&y)!=EOF)
{
if(x==0&&y==0) break;
c=0;
for(i=x;i<=y;i++)
{
sum=i*i+i+41;
for(n=2;n<sum;n++)
{
if(sum%n==0)
c++;
}
}
if(c==0)
printf("OK\n");
else
printf("Sorry\n");
}
return 0;
}
#include<stdio.h>
#include<math.h>
然后你的k在这道里面没意义,c赋初值应该在k的那个位置,才能判断X到Y所有的值域符合素数,像你的那样只能判断最后一个数字。这是在你的基础上改的代码。
#include<stdio.h>
#include<math.h>
int main()
{
int n,x,y,i,sum,k,c;
while(scanf("%d %d",&x,&y)!=EOF)
{
if(x==0&&y==0) break;
c=0;
for(i=x;i<=y;i++)
{
sum=i*i+i+41;
for(n=2;n<sum;n++)
{
if(sum%n==0)
c++;
}
}
if(c==0)
printf("OK\n");
else
printf("Sorry\n");
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询