由A〈B,A*B=2698可知B^2>2698(所以B>=52),又因为A+B等于B+B/2698(这个是个递增的函数最小值应该在B=sqrt(2698)处取得,又因为B>=52,所以A+B在B>=52时是递增的所以只要搜索B>=52且满足2698能整除B的最近的值就行),所以程序如下。
#include "stdio.h"
void main()
{
int result;
for(int b=52;b<2698;b++)
{
if(2698%b==0)
{
result=b;
break;
}
}
printf("%d\n",result);
}
程序在vc6.0通过并且结果为71正确。
void main()
{
int a, b;
for (a = 1; a < 52; a++)
{
if (2698 % a == 0)
{
b = 2698 / a;
}
}
printf ("b = %d\n", b);
}
这里没用到判断A+B最小,而是取了最后一个b值。因为a是递增的,而abs(a-b)越小a+b就越小(均值定理),所以最后一个b肯定满足a+b最小。
这个不难,你只要好好分析下就会做了
Private Sub Form_Load()
Dim tempA As Integer
Dim tempB As Integer
Dim B As Integer
Dim sum As Integer
Dim little As Integer
little = 2698
For tempA = 1 To 2698
tempB = 2698 / tempA
If tempA < tempB And 2698 Mod tempA = 0 Then
sum = tempA + tempB
End If
If sum < little Then
little = sum
B = tempB
End If
Next tempA
MsgBox B
End Sub
都对
不是吧