Problem 02. 表达式的值是否为素数
题目简述:
表达式n^2+n+41,当n在[x,y]范围内取整数值时 (-39<=x<y<=50),判定该表达式的值是否都为素数。若全为素数输出OK,否则输出Sorry。
解题思路:
这个题的关键在于如何判断一个数是否为素数。
细节处理:判断素数时可以用for(int j=2;j<=a;j++),但这个的循环次数过多,我们可以将它优化成for(int j=2;j<=sqrt(a);j++),与此同时加上一个头文件#include<cmath>。
源代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int x,y,a,b;
while(cin>>x>>y)
{
b=0;
if(x==0&&y==0) break;
else
{
for(int i=x;i<=y;i++)
{
a=i*i+i+41;
for(int j=2;j<=sqrt(a);j++)
{
if(a%j==0)
{
b++;
break;//判断是否为素数,若b=0时,则为素数,否则不是素数。
}
}
}
if(b==0) cout<<"OK"<<endl;
else cout<<"Sorry"<<endl;
}
}
return 0;
}