从sqrt(n)枚举到1,一旦满足一定是差最小的数。AC代码:#include<cstdio> #include<cmath> int main(){ int n; while(scanf("%d",&n)!=EOF){ int h=(int)sqrt(n); for(int i=h;i>0;--i){ if(n%i==0) { printf("%d %d\n",i,n/i); break; } } } return 0; }如有不当之处欢迎指出!