| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 413 人关注过本帖
标题:最小公倍数 不知道哪里错误了
只看楼主 加入收藏
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
结帖率:100%
收藏
 问题点数:0 回复次数:5 
最小公倍数 不知道哪里错误了
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 编辑 ]
搜索更多相关主题的帖子: 最小公倍数 color 
2012-02-28 16:33
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:0 
   知道了      

看了  评论     要求很高    long  long  是不够存的     
只能用数组了

不管怎么走、总有一个终点...
2012-02-28 17:35
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
收藏
得分:0 
最大公约数为(a,b),最小公倍数为[a,b],存在等式a*b=(a,b)*[a,b],用这个可简化不少程序。。。

数学好难!
2012-02-28 17:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
看来楼主还是没仔细看题   给2个正整数a,b(1<=a,b<=10^100),求a和b的最小公倍数。

你见过那种数据类型能存放开100位整数?  这个题比较难  

这里给你个思路:题目需要用到大数乘法(大数乘大数),这个就像小学生算数一样按位乘就可以

大数除法,有些人可能会拿两个数去试减,但是如果是10^100-1呢,这样要减10^100次,必超时。

所以应该从高位相减 差的位补零 来从左到右确定结果每一位的值

大数求余,和除法一样去试减一直到减不开为止,接下来就是欧几里得了

总之这题很恶心   写对了就是AC 错一点就是WA TLE MLE。。。 大数运算最好有个模板

如果你做完这题 你就会得到一套很不错的大数模板

                                         
===========深入<----------------->浅出============
2012-02-28 19:01
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:0 
回复 4楼 laoyang103
多谢版主提示!

不管怎么走、总有一个终点...
2012-02-29 08:49
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:0 
回复 3楼 zxd675816777
   这个知道      
但是  存储不行的   long long都不够!

不管怎么走、总有一个终点...
2012-02-29 08:50
快速回复:最小公倍数 不知道哪里错误了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013648 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved