第1个回答 2008-11-11
int a=0, b=0,min=2048;
for (a = 1, b = 2048 / a; a <= sqrt(2048); a++)
{
if (a * b == 2048)
{
if(min>a+b)
{
min = a + b;
}
}
}
第2个回答 2008-11-11
//可以看出来最接近平方根的乘积组合的和是最小的,下面最一般的做法
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,k,sum[3]={0};
k=(int)sqrt(2048);
sum[2]=2048;
for(i=1;i<=k;i++)
if(2048%i == 0)
{
j=2048/i;
printf("%d,%d\n",i,j);//乘机是2048的都打印出来
if((j+i)<sum[2])
{
sum[2] = j+i;
sum[1] = j;
sum[0] = i;
}
}
printf("\n%d,%d\n",sum[0],sum[1]); //和最小的打印出来
}