UVA - 1644 - Prime Gap(找相邻素数差值)

来源:互联网 发布:数控车床编程代码讲解 编辑:程序博客网 时间:2024/06/05 17:21


直接给素数打表后查找即可


#include<cstdio>#include<cstring>#include<cctype>#include<cstdlib>#include<cmath>#include<iostream>#include<sstream>#include<iterator>#include<algorithm>#include<string>#include<vector>#include<set>#include<map>#include<queue>#include<stack>#include<list>#include<ctime>#define Memset(x) memset(x, 0, sizeof(x))#define all(x) x.begin(), x.end()const int E = 2000000 + 10;const double EPS = 1e-6;using namespace std;typedef unsigned long long llu;vector<int> prime;int pri[E];void dabiao(){    pri[0] = 1, pri[1] = 1, pri[2] = 0;    int len = 0;    for(int i = 2; i < E; i++){        if(len > 100000)  break;        if(!pri[i]){            prime.push_back(i);  len++;            for(int j = i * 2; j < E; j += i)                pri[j] = 1;        }    }}int main(){    Memset(pri);    dabiao();    int n;    while(scanf("%d", &n) == 1 && n){        if(!pri[n])  {printf("0\n");  continue;}        vector<int>::iterator temp = upper_bound(all(prime), n);        printf("%d\n", *temp - *(temp - 1));    }    return 0;}


0 0
原创粉丝点击