设长为a,宽为b,则由题意可知:ab=n且a>=b,推出a>=根号n(sqrt函数)。
再运用向上取整函数ceil(double x)找到a的起始值,两层循环暴力搜索找到值后直接结束。
#include<stdio.h>
#include<math.h>
int main() {
double n, a, b;
scanf("%lf", &n);
for (a = ceil(sqrt(n)); a <= n; a++)
for (b = a; b >= 1; b--) //要使a,b大小尽量接近,所以从中心向两边遍历
if (a * b == n) {
printf("%.0lf %.0lf", b, a);
return 0;
}
return 0;
}