最小公倍数 不知道哪里错误了
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 编辑 ]