GitBook

这里写图片描述

让萌萌哒小苏贺纠结了好久的一题 不过没那么复杂的 直接进行计算后判断是否为素数就好了

#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]素数小问题