首页 > 代码库 > POJ 3518 Prime Gap(素数题)
POJ 3518 Prime Gap(素数题)
【题意简述】:输入一个数,如果这个数是素数就输出0,如果不是素数就输出离它最近的两个素数的差值,叫做Prime Gap。
【分析】:这题过得很险,因为我是打的素数表。由于最大的素数是1299709,所以注意在打表时要使用long long,否则程序应该不能运行。注意这一点应该就可以了。积累!
// 2984K 235Ms #include<iostream> using namespace std; #define N 2000001 bool isprime[N]; long long prime[100001],nprime; // 注意long long void doprime() { long long i,j; // !!注意 nprime = 1; memset(isprime,true,sizeof(isprime)); isprime[1] = 0; for(i = 2;i<=1299709;i++) { if(isprime[i]) { prime[nprime++] = i; for(j = i*i;j<=1299709;j+=i) { isprime[j] = false; } } } } int main() { long long n;//注意! doprime(); while(1) { cin>>n; if(n == 0) break; for(long long i = 0;i<nprime;i++) { if(n == prime[i]){ cout<<0<<endl; break; } if(n>prime[i]&&n<prime[i+1]){ cout<<prime[i+1]-prime[i]<<endl; break; } } } return 0; }
POJ 3518 Prime Gap(素数题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。