输入m,输出m到2m之间(包含m和2m)最大的素数减去最小的素数的结果。
输入一个正整数n,表示测试案例的数量。
每组案例中有一个正整数m。
输出针对每组案例,输出一个整数,表示m到2m之间(包含m和2m)最大的素数减去最小的素数的结果。每组案例输出完都要换行。
样例输入 复制样例2
1
7
样例输出0
6
HINT1到2之间最大的素数是2,最小的素数是2,2-2=0
7到14之间最大的素数是13,最小的素数是7,13-7=6
解:
#include<iostream> #include<cmath> using namespace std; int main() { int n,min,max; cin>>n; for(int i=1;i<=n;i++) { int m,m2,a,ss=1; cin>>m; max=m; m2=2*m; min=m2; int ins=0,axs=0; for(a=m;a<=m2;a++) { ss=1; if(a>=2) { if((a==3)||(a==2)) ss=1; else { for(int j=2;j<=sqrt(a);j++) { if((a%j)==0) { ss=0; } } } } else ss=0; if(ss==1) { if(ins==0) { min=a; ins=1; } else { if(a<min) min=a; } if(axs==0) { max=a; axs=1; } else { if(a>max) max=a; } } } cout<<max-min<<endl; } return 0; }