求两自然数,其和是667,最小公倍数与最大公约数之比是120:1(例如(115,552) 、(232,435))
#include <stdio.h>
int fn_gcd(int iNumFor,int iNumNext);
int main()
{
int iNum1,iNum2;
for(iNum1=2;iNum1<334;iNum1++)//iNum1<iNum2
{
iNum2=667-iNum1;
int igcdNum=fn_gcd(iNum1,iNum2);
int ilcmNum=iNum1*iNum2/igcdNum;
if (igcdNum*120==ilcmNum)
{
printf("%d %d/n",iNum1,iNum2);
}
}
return 0;
}
int fn_gcd(int iNumFor,int iNumNext);
int main()
{
int iNum1,iNum2;
for(iNum1=2;iNum1<334;iNum1++)//iNum1<iNum2
{
iNum2=667-iNum1;
int igcdNum=fn_gcd(iNum1,iNum2);
int ilcmNum=iNum1*iNum2/igcdNum;
if (igcdNum*120==ilcmNum)
{
printf("%d %d/n",iNum1,iNum2);
}
}
return 0;
}
int fn_gcd(int iNumFor,int iNumNext)
{
//gcd(a,b)=gcd(b,a mod b)
int iTemp;
while (1)
{
iTemp=iNumNext;
if (iNumFor % iNumNext==0)
{
return iNumNext;
}
iNumNext=iNumFor % iNumNext;
iNumFor=iTemp;
}
}
{
//gcd(a,b)=gcd(b,a mod b)
int iTemp;
while (1)
{
iTemp=iNumNext;
if (iNumFor % iNumNext==0)
{
return iNumNext;
}
iNumNext=iNumFor % iNumNext;
iNumFor=iTemp;
}
}
/
num1*num2=gcd(num1,num2)*lcm(num1,num2)
让我奇怪很多例程都同时求了最大公约数和最小公倍数,求一个不就成了么!