问题描述:
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
- 输入
-
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000), - 输出
-
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。 - 样例输入
-
3 6 8 10
- 样例输出
-
5 1 7 1 11 1
#include<cmath> #include<iostream> #include<algorithm> using namespace std; int isprime(int a) { if(a < 2) return 0; for(int i = 2; i <= sqrt(a); i++) if(a%i==0) return 0; return 1; } int main() { int n, x, i, left, right, lenl, leng; cin>>n; while(n--) { cin>>x; leng = lenl = 0; if(x == 1) { lenl = 2; } else { for(i = x; ; i--) { if(isprime(i)) { left = i; lenl = x - i; break; } } } for(i = x; ; i++) { if(isprime(i)) { right = i; leng = i - x; break; } } if(leng < lenl) { cout<<right<<" "<<leng<<endl; } else { cout<<left<<" "<<lenl<<endl; } } return 0; }