指定范围的素数判定【杭电2012】 附题

来源:互联网 发布:淘宝 7个小白 编辑:程序博客网 时间:2024/04/26 06:01

/*
素数判定
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 72758    Accepted Submission(s): 25337


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

#include<stdio.h>int a[3000]={1,1,0};void f(){                           //对0-3000内的数分类,素数标记为0,反之为一。 int i,j;for(i=2;i*i<3000;i++){  //for(i=2;i<floor(sqrt(3000)+0.5);i++){    防止越界2147483746 if(!a[i]){for(j=2*i;j<3000;j+=i)a[j]=1;}}}int main(){int i,x,y,sum; f(); while(scanf("%d%d",&x,&y) && x+y){            int k=0;         for(i=x;i<=y;i++){         sum=i*i+i+41;        if(a[sum]==1){           k=1;   break;           }         }printf(k?"Sorry\n":"OK\n");} return 0;}

0 0
原创粉丝点击