不必想方设法求出哪一对长宽最接近,从最小开始遍历枚举,令宽小于等于长,第一个得出的结果必定是最接近的,越大差值越大,越小差值越小。(必有一组结果为1 和 n 所以不用担心return的问题)。 #include <stdio.h>

int main(void){ int n; scanf("%d",&n); for(int a=1;a<=n;a++){ for(int b=1;b<=a;b++){ if(a*b==n){ printf("%d %d",b,a); return 0; } } } }alt