素数判定
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 233173 Accepted Submission(s): 82813
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
Author
lcy
Source
C语言程序设计练习(二)
代码:
#include<iostream>
#include<cmath>
using namespace std;
bool calculate(int n){
bool flag=true;
int m=pow(n,2)+n+41;
for(int j=2;j<m;j++){
if(m%j==0){
flag=false;
}
}
return flag;
}
int main(){
int a,b;
while(cin>>a>>b){
if(a>=-39&&a<b&&b<=50){
bool flag=true;
if(a==0&&b==0){
break;
}
for(int i=a;i<=b;i++){
if(!calculate(i)){
flag=false;//这里我就是用了bool值来重新赋值,最后发现这个错误,改正就能运行了。
break;
}
}
if(flag){
cout<<"OK"<<endl;
}else{
cout<<"Sorry"<<endl;
}
}
}
}
犯了一个致命的错误就是对bool值的赋值上,做了重复赋值,导致原来的flag不知道原来的bool值,总是运行不正确,一个错误也是致命的。
共有条评论 网友评论