Think:
1题意:输入一个整数n,输出后一个素数和前一个素数的差值,输入是素数时输出0,n不超过1299709(第100000个素数),输入0时结束不进行操作
2方法:输入数据范围为【0,1299709】发现可用下标表示,直接用筛法建立素数表然后进行查询即可
以下为Accepted代码
#include <bits/stdc++.h>
using namespace std;
int v[1400000];
void Init();
int main(){
Init();
int t, k, a, b;
while(scanf("%d", &t) && t){
if(!v[t])
printf("0\n");
else {
k = t;
while(v[k]){
k--;
if(!v[k]){
a = k;
break;
}
}
k = t;
while(v[k]){
k++;
if(!v[k]){
b = k;
break;
}
}
printf("%d\n", b-a);
}
}
return 0;
}
void Init(){
memset(v, 0, sizeof(v));
v[1] = 1, v[2] = 0;
for(int i = 2; i <= 1400000; i++){
if(!v[i]){
for(int j = i*2; j <= 1400000; j += i){
v[j] = 1;
}
}
}
}