// 打表#include<iostream>#include<algorithm>#include<cstring>usingnamespace std;constint N =2e7+1000;bool vis[N];int primes[N];int cnt;int x;// 線性篩voidget_primes(int n){vis[0]= vis[1]=1;for(int i =2; i <= n; i ++){if(!vis[i]) primes[cnt ++]= i;for(int j =0; primes[j]<= n / i; j ++){vis[primes[j]* i]=1;if(i % primes[j]==0)break;}}}// 判斷在x和len的情況下是否滿足情況boolcheck(int len){// 枚舉左邊界for(int l = x - len +1; l <= x; l ++){int r = len + l -1;int sum =(l + r)*(r - l +1)/2;if(sum <=1)continue;if(!vis[sum]){cout << x <<" "<< len << endl;returntrue;}}returnfalse;}intmain(){ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);get_primes(N);for(int i =1; i <=10000; i ++){// 輸入的數 xx = i;// 枚舉區間長度,判斷x時最小lenfor(int len =1;; len ++)if(check(len)){break;}}return0;}#include<iostream>#include<algorithm>usingnamespace std;constint N =2e7+1000;bool vis[N];int primes[N];int cnt;voidget_primes(int n){vis[0]= vis[1]=1;for(int i =2; i <= n; i ++){if(!vis[i]) primes[cnt ++]= i;for(int j =0; primes[j]<= n / i; j ++){vis[primes[j]* i]=1;if(i % primes[j]==0)break;}}}intmain(){ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);get_primes(N);int T;cin >> T;while(T --){int x;cin >> x;if(x >0&&!vis[x]){cout <<1<< endl;continue;}if(x >0&&(!vis[x + x +1]||!vis[x + x -1])){cout <<2<< endl;continue;}if(x <0) x =-x;for(int i = x +1;; i ++){if(!vis[i]){cout <<2*(i -1)+2<< endl;break;}if(!vis[i + i +1]){cout <<2*(i -1)+3<< endl;break;}}}return0;}