/*
* POJ_3518.cpp
*
* Created on: 2013年10月7日
* Author: Administrator
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1299710;
bool u[maxn];
int ans[maxn];
void prepare(){
int i,j,k;
memset(u,true,sizeof(u));
for(i = 2 ; i < maxn ; ++i){
if(u[i]){
for(j =2 ; j*i < maxn ; ++j){
u[j*i] = false;
}
}
}
for(i = 2 ; i < maxn ;++i){
if(!u[i]){
j = i;
while(j <maxn && !u[j]){
j++;
}
--j;
for(k = i ; k <= j ; ++k){
ans[k] = j - i + 2;
}
i = j;
}else{
ans[i] = 0;
}
}
}
int main(){
prepare();
int n;
while(scanf("%d",&n)!=EOF,n){
printf("%d\n",ans[n]);
}
return 0;
}
(数论2.1.4)POJ3518 Prime Gap(埃拉托斯特尼筛法)
最新推荐文章于 2024-09-12 00:06:57 发布
本文探讨了一种数学筛法算法用于计算小于给定数n的所有质数,并提供了质数计数的具体实现。通过预处理生成质数列表,进而快速获取特定范围内的质数数量。
497

被折叠的 条评论
为什么被折叠?



