最小公倍数 不知道哪里错误了
http://www.
程序代码:#include <stdio.h>
void main()
{
long int return_result(long num1,long num2);
long int num1,num2;
while(1)
{
scanf("%ld %ld",&num1,&num2);
if((0==num1)&&(0==num2))
break;
else
printf("%ld\n",return_result(num1,num2));
}
}
//计算最小公倍数
long int return_result(long num1,long num2)
{
long int return_min_yueshu(long a,long b);
long int nums,result[1000]={0};
int i=0;
nums = return_min_yueshu(num1,num2);
while( 1!= nums )
{
result[i++] = nums;
num1 = num1/nums;
num2 = num2/nums;
nums = return_min_yueshu(num1,num2);
}
nums = num1*num2;
for(i=0;i<1000;i++)
{
if(0!= result[i])
nums *= result[i];
else
break;
}
return nums;
}
long int return_min_yueshu(long num1,long num2)
{
//计算出最小公约数
while(num1>num2?(num1=num1%num2):(num2=num2%num1));
return num1+num2;
}我GCC编译通过了 测试了几条数据 也正确可是 一直提示 结果错误!
不知道是什么原因!
------------------------------------------------------------------------------------------------------------------------------------------------------
思路:
首先计算两个数A和B 的最小公约数 C
然后再求(A/C) 和(B/C)的最小公约数D
.....
直到公约数为1 为止
然后 返回 C*D*.....*num1*num2
实在找不到原因!高手出手指点下!顺便根据代码看看我有没有走歪路!
[ 本帖最后由 icysky 于 2012-2-28 16:49 编辑 ]








