已知A<B,A和B均为正整数,且A*B=716699,求A+B的最小值
2013-07-06
展开全部
你这应该是编程题吧?#include "stdio.h"
#include "math.h"
void main()
{ long int a,b,i,j;
i=716699;
j=716699;
for(a=3;a<sqrt(716699);a+=2)
for(b=a;b<2*sqrt(716699);b+=2)
if(a*b==716699)
{
if((a+b)<(i+j))
{i=a;j=b;}
}
printf("a=%ld,b=%1d",i,j);
}
#include "math.h"
void main()
{ long int a,b,i,j;
i=716699;
j=716699;
for(a=3;a<sqrt(716699);a+=2)
for(b=a;b<2*sqrt(716699);b+=2)
if(a*b==716699)
{
if((a+b)<(i+j))
{i=a;j=b;}
}
printf("a=%ld,b=%1d",i,j);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-06
展开全部
采用C语言,代码如下:
#include"stdio.h"
#include"math.h"
main()
{
int a,b,i,n,m;
m=716699;
n=(int)sqrt(m);
i=2;
while(a<n)
{
i++;
a=n-i;
if(m%a==0) break;
}
printf("A is %d\n",a);
}
算法思想:理论上当A+B=2A或2B时,A+B最小.当A+B=1+716699时,A+B最大.
所以只要取A为小于716699的平方根的取整整数,当716699的平方根取整一直减一,当到达第一个满足716699除于A余数为零时,A+B即为最小.此时A为563.谢谢!
#include"stdio.h"
#include"math.h"
main()
{
int a,b,i,n,m;
m=716699;
n=(int)sqrt(m);
i=2;
while(a<n)
{
i++;
a=n-i;
if(m%a==0) break;
}
printf("A is %d\n",a);
}
算法思想:理论上当A+B=2A或2B时,A+B最小.当A+B=1+716699时,A+B最大.
所以只要取A为小于716699的平方根的取整整数,当716699的平方根取整一直减一,当到达第一个满足716699除于A余数为零时,A+B即为最小.此时A为563.谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询