已知两个正整数的和为667,它们的最大公约数与最小公倍数之比为1:120求这两个数。
注:要求不能编写或是调用求两个数的最大公约数或最小公倍数的函数来求解,而且程序的运算速度要尽量快。
#include<stdio.h>
#include<math.h>
#define SUM 667
int main()
{
int t,n=1,sq,x1,x2;
while((t=SUM*SUM-4*120*n*n)>=0)
{
sq=(int) sqrt(t);
if(sq*sq==t && (SUM+sq)%2==0)
{
x1=(SUM+sq)/2;
x2=(SUM-sq)/2;
if(x1>0 && x2>0 && x1%n==0 && x2%n==0)
printf("the two numbers are %d,%d\n",x1,x2);
}
n++;
}
return 0;
}