C++ 辗转相除法 - 求最大公约数

辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数最大公因子的算法。它是已知最古老的算法, 其可追溯至公元前300年前。

来自 百度百科 的介绍,下面就不多废话了

上代码:

int BigestFactor(int m,int n)
{
    int r=m;
    while(r!=0)
    {
            r=m%n;
            m=n;
            n=r;         
    }
    return m;
}

代码思路详见这张流程图:


辗转相除法流程图

所以来编个程序吧~
分数约分程序:

#include <iostream>

using namespace std;

int BigestFactor(int ,int);

int main()
{
    int m,n=0;   
    cin>>m>>n;
    int bf = BigestFactor(m,n);
    cout<<bf<<endl;
    cout<<m*1.0/bf<<endl<<n*1.0/bf<<endl;
    cin.get();
    cin.get();
    return 0;
}

int BigestFactor(int m,int n)
{
    int r=m;
    while(r!=0)
    {
            r=m%n;
            m=n;
            n=r;         
    }
    return m;
}

不解释了,自己领悟

最后再纪念一下在公元前300年前发明辗转相除法的欧几里得

欧几里得
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最大公约数(GCD, Greatest Common Divisor,为简便下文都使用GCD表示最大公约数):指某...
    JxYoung阅读 15,222评论 8 16
  • 漫画算法:辗转相除法是什么鬼? - 文章 - 伯乐在线 大四毕业前夕,计算机学院的小灰又一次顶着炎炎烈日, 去某I...
    viva158阅读 1,219评论 0 0
  • 辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公约数的算法。 算法描...
    环球探测阅读 533评论 0 0
  • 内疚,是一种比悲伤、愤怒、痛苦等人类其他一切情感更让人不安、备受煎熬和折磨的情感。内疚,往往是私密的、独自忍受的、...
    黄博Yolanda阅读 1,420评论 0 1
  • 上一章 小雯大名叶雯,军训时被小木勾搭上,然后就一路走过直到现在,两人都是安静而随和的性子,所以争执基本是不存在的...
    Yi_氤阅读 325评论 0 0