首页 > 代码库 > NEFU 109
NEFU 109
n最大为2000000000(不知为什么OJ上是1000),若为判断2000000000是素数,则必有一个素数在sqrt(n)内,求出这个范围 的所有素数,其比最大数据小的n‘的sqrt(n‘)也在这个范围 内。
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>using namespace std;const int Max=50000;bool prime[Max+1];int isprime[Max];int main(){ memset(prime,true,sizeof(prime)); prime[0]=prime[1]=false; int e=(int)sqrt(1.0*Max); int cp=0; for(int i=2;i<=e;i++){ if(prime[i]){ for(int j=i+i;j<=Max;j+=i) prime[j]=false; } } for(int i=0;i<=Max;i++) if(prime[i]) isprime[cp++]=i; int n; while(scanf("%d",&n)!=EOF){ if(n==1) { printf("NO\n"); continue; } int c=0; int lim; lim=sqrt(n*1.0); bool flag=true; for(int i=0;i<cp;i++) if(isprime[i]<=lim) if(n%isprime[i]==0) flag=false; if(flag)printf("YES\n"); else printf("NO\n"); } return 0;}
NEFU 109
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。