思路:写一个判断素数的函数,然后分别向两边搜索,要注意的是 m=1时的情况。
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int is_prime(int x) { double n=sqrt(x); int t=1; if(x==0||x==1) t=0; else { for(int i=2;i<=n;i++) { if(x%i==0) { t=0;break; } } } } int main() { int T; cin>>T; while(T--) { int a,b=0,c=0; cin>>a; if(a==1) { printf("2 1\n"); } else { int i,j; for(i=a;!is_prime(i);i--) b++; for(j=a;!is_prime(j);j++) c++; if(b<=c) { printf("%d %d\n",i,b); } else { printf("%d %d\n",j,c); } } } return 0; }