思路如下:
1 对所有可能的数进行遍历。
2 对每个数,求得另外一个数。
3 计算两数的最大公约数和最小公倍数,判断是否可以整除且商为120.
4 如果符合,则为该数。否则继续。
代码如下:
#include
int main()
{
int n,m,gcd, lcd;
for(n = 1; n < 334; n ++)//对可能的n遍历。
{
m = 667-n;
for(gcd = n; gcd >=1 ; gcd--)//求最大公约数。
if(m%gcd == 0 && n%gcd == 0) break;
lcd=m/gcd*n;//求最小公倍数。
if(lcd % gcd == 0 && lcd/gcd==120)
printf("m = %d, n = %d\n",m,n);
}
return 0;
}
#include
int gcd(int a,int b);
int lcm(int a,int b);
int main(void)
{
int i;
for(i=1;i<667/2;++i)
{
if(lcm(i,667-i)/gcd(i,667-i)==120)
{
printf("%d,%d\n",i,667-i);
}
}
return 0;
}
int gcd(int a,int b)
{
if(a%b)
{
return gcd(b,a%b);
}
return b;
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b;
}
#include
int main()
{
int i,j;
int a,b,m;
int gcd,lcm;
for(m=2;m<=333;m++){
for(i=m;i>=1;i--)
if(!((m%i)||((667-m)%i))){
gcd=i;
break;
}j=667-m;
b=j;
a=m;
while(b%a)
b+=j;
lcm=b;
if((lcm==gcd*120)&&(lcm%gcd)==0)
printf("%d %d\n",m,667-m);
}
return 0;
}