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

posted @ 2016-03-24 19:46  BoilTask  阅读(11)  评论(0编辑  收藏  举报