您的位置:首页 > 其它

2017-12-10杭电OJ2012 《素数判定》

2017-12-10 11:09 232 查看

1.题目描述

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

2.源代码

#include<iostream>
using namespace std;
bool fun(int a)
{
int i,j=0;
for(i=2;i<a;i++)
if(a%i==0)
j++;
if(j>0)
return false;
else
return true;
}
int main()
{
int x,y;
while(cin>>x>>y)
{
if(x==0&&y==0)
break;
int n,sum,j=0;
for(n=x;n<=y;n++)
{
sum=n*n+n+41;
if(fun(sum)==1)
j++;
}
if(j==(y-x+1))
cout<<"OK";
else
cout<<"Sorry";
cout<<endl;
}
}


3.运行截图





4.调试信息

这道题我将素数判定的部分写成了一个bool函数。

我写代码的时候也是因为粗心,没有对函数部分仔细想想,if判断素数写的不是很好,后来才想到,于是修改了一下,添上了9~12行。

还有就是,x~y一共是(y-x+1)个数,这个地方那会也没注意到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: