【HPU】[1729]素数小问题
让萌萌哒小苏贺纠结了好久的一题
不过没那么复杂的
直接进行计算后判断是否为素数就好了
#include<stdio.h>
#include<math.h>
//int a[1005200]= {1,1};
//bool b[2000200];
bool su(int m) {
if(m<2)
return false;
int i;
int k=(int)sqrt(m);
for(i=2; i<=k; i++) {
if(m%i==0)
break;
}
if(i>k)
return true;
else
return false;
}
int main() {
// for(int i=2; i<1010; i++) {
// if(!a[i]) {
// for(int j=i+i; j<1005200; j+=i) {
// a[j]=1;
// }
// }
// }
// for(int i=-1000100; i<1000100; i++) {
// if(i%2!=0)
// b[i]=false;
// else {
// int m;
// if(i<0)
// m=-i-(i/2);
// else
// m=i-(i/2);
// if(!a[m])
// b[i]=true;
// }
// }
int n,m;
while(scanf("%d %d",&n,&m)!=EOF) {
int i;
for(i=m; i>=n; i--) {
int t;
if(i<0) {
t=-(i+i/2);
} else {
t=i-i/2;
}
if(su(t)) {
break;
}
}
if(i>=n)
printf("%d\n",i);
else
printf("-1\n");
}
return 0;
}
题目地址:【HPU】[1729]素数小问题