增加一个判素数的步骤就过了。太囧了。。
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 using namespace std; 5 6 int k; 7 8 int main(){ 9 while(scanf("%d",&k)!=EOF){ 10 int q=sqrt(k*1.0); 11 q++; 12 bool flag=false; 13 for(int l=2;l<=q;l++) 14 if(k%l==0){ 15 flag=true; 16 break; 17 } 18 if(!flag) 19 printf("%d ",k-1); 20 else{ 21 for(int l=3;l<=k;l++) 22 if(k%l==0){ 23 printf("%d ",l-1); 24 break; 25 } 26 } 27 } 28 return 0; 29 }