素数判定
2017-07-24 11:00
155 查看
点击打开链接
对于表达式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
Sample Output
题解:可用素数筛法求解
#include<cstdio>
bool prime[2600];
int f(int n)
{
return n*n+n+41;
}
int main()
{
int j,x,y,i,t=0,flag;
prime[0]=prime[1]=false;
for(i=2;i<2600;i++)
prime[i]=true;
for(i=2;i<2600;i++)
if(prime[i])
{
for(j=i*i;j<2600;j+=i)
prime[j]=false;
}
while(scanf("%d%d",&x,&y),x||y)
{
flag=1;
for(;x<=y;x++)
if(!prime[f(x)])
{
flag=0;
break;
}
if(flag) printf("OK\n");
else printf("Sorry\n");
}
return 0;
}
对于表达式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<cstdio>
bool prime[2600];
int f(int n)
{
return n*n+n+41;
}
int main()
{
int j,x,y,i,t=0,flag;
prime[0]=prime[1]=false;
for(i=2;i<2600;i++)
prime[i]=true;
for(i=2;i<2600;i++)
if(prime[i])
{
for(j=i*i;j<2600;j+=i)
prime[j]=false;
}
while(scanf("%d%d",&x,&y),x||y)
{
flag=1;
for(;x<=y;x++)
if(!prime[f(x)])
{
flag=0;
break;
}
if(flag) printf("OK\n");
else printf("Sorry\n");
}
return 0;
}
相关文章推荐
- 算法杂项:快速判定素数(素数表)
- 素数判定相关资料
- 2012杭电 素数判定
- 九度OJ-1047:素数判定
- 九度-1047-素数判定
- poj 3126 bfs+素数判定
- 【九度OJ】题目1047:素数判定 解题报告
- 数论之大数分解与素数判定
- POJ 1811 Prime Test【素数判定与大数分解】
- HDOJ 【C】 2012 素数判定
- HDU 2012 素数的判定
- ZOJ - 3758 - Singles' Day(素数判定)
- zzuli OJ 1057: 素数判定
- E - 素数判定(素数打表)
- 素数判定算法
- hdoj 素数判定 2012 (素数打表)
- HDU2012 素数判定
- 基础数论算法(5) 素数的判定
- 模板编程 实例2 素数判定
- hdu 2012 素数判定(打表)(备战LQB)