欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

遞歸法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)代碼

 更新時(shí)間:2013年05月08日 17:03:40   作者:  
今天整理了一下用遞歸法求最大公約數(shù)(gcd)和最小公倍數(shù)(lcm)。主要的工作是求最大公約數(shù)。數(shù)學(xué)上可以用輾轉(zhuǎn)法求最大公約數(shù)


       數(shù)學(xué)原理:

       設(shè)有兩個(gè)數(shù)num1和num2,假設(shè)num1比較大。令余數(shù)r = num1 % num2。
       當(dāng)r == 0時(shí),即num1可以被num2整除,顯然num2就是這兩個(gè)數(shù)的最大公約數(shù)。
       當(dāng)r != 0時(shí),令num1 = num2(除數(shù)變被除數(shù)),num2 = r(余數(shù)變除數(shù)),再做 r = num1 % num2。遞歸,直到r == 0。
       以上數(shù)學(xué)原理可以用具體的兩個(gè)數(shù)做一下分析,這樣容易理解。

代碼實(shí)現(xiàn)(求最大公約數(shù)):

復(fù)制代碼 代碼如下:

#include <iostream>
using namespace std;

int gcd(int a, int b);//聲明最大公約數(shù)函數(shù)

int main()
{
    int num1 = 1;
    int num2 = 1;   
    cin >> num1 >> num2;
    while(num1 == 0 || num2 == 0)//判斷是否有0值輸入,若有則重新輸入
    {
        cout << "input error !" << endl;
        cin >> num1 >> num2;
    }
    cout << "The gcd of " << num1 << " and " << num2 << " is: " << gcd(num1, num2) << endl;//調(diào)用最大公約數(shù)函數(shù)
    return 0;
}

int gcd(int a, int b)//函數(shù)定義
{
    int max = a > b ? a : b;
    int min = a < b ? a : b;
    a = max;
    b = min;
    int r = a % b;
    if(0 == r)//若a能被b整除,則b就是最大公約數(shù)。
        return b;
    else
        return gcd(b, r);//遞歸   
}


最小公倍數(shù)的求法建立在求最大公約數(shù)的方法之上。因?yàn)樽钚」稊?shù)等于兩個(gè)數(shù)的積除以最大公約數(shù)。

代碼實(shí)現(xiàn)(求最小公倍數(shù)):
復(fù)制代碼 代碼如下:

#include <iostream>
using namespace std;

int gcd(int a, int b);//聲明最大公約數(shù)函數(shù)

int main()
{
    int num1 = 1;
    int num2 = 1;   
    int lcm = 1;
    cin >> num1 >> num2;
    while(num1 == 0 || num2 == 0)//判斷是否有0值輸入,若有則重新輸入
    {
        cout << "input error !" << endl;
        cin >> num1 >> num2;
    }
    lcm = num1 / gcd(num1, num2) * num2;//先除后乘可以在一定程度上防止大數(shù)
    cout << "The lcm of " << num1 << " and " << num2 << " is: " << lcm << endl;
    return 0;
}

int gcd(int a, int b)//函數(shù)定義
{
    int max = a > b ? a : b;
    int min = a < b ? a : b;
    a = max;
    b = min;
    int r = a % b;
    if(0 == r)//若a能被b整除,則b就是最大公約數(shù)。
        return b;
    else
        return gcd(b, r);//遞歸   
}


以上是僅僅限與求兩個(gè)書的最大公約數(shù)和最小公倍數(shù),當(dāng)數(shù)字有很多時(shí),該法是否依然適用,還有待考證。

相關(guān)文章

  • c語言中return與exit的區(qū)別淺析

    c語言中return與exit的區(qū)別淺析

    c語言中return與exit的區(qū)別淺析,需要的朋友可以參考一下
    2013-03-03
  • 基于Qt+opencv開發(fā)的視頻播放器示例詳解

    基于Qt+opencv開發(fā)的視頻播放器示例詳解

    這篇文章主要為大家介紹了基于Qt+opencv開發(fā)的視頻播放器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C++?內(nèi)存泄漏調(diào)試方式

    C++?內(nèi)存泄漏調(diào)試方式

    這篇文章主要介紹了C++?內(nèi)存泄漏調(diào)試方式,C++和其他高級(jí)語言不同,需要自行管理內(nèi)存,項(xiàng)目大調(diào)用多,下文我們就來看看C++?內(nèi)存泄漏調(diào)試方式分享,需要的小伙伴可以參考一下
    2022-04-04
  • C++ 11和C++98相比有哪些新特性

    C++ 11和C++98相比有哪些新特性

    C++11標(biāo)準(zhǔn)提供了許多有用的新特性。這篇文章特別針對(duì)使C++11和C++98相比看上去像一門新語言的特性
    2017-03-03
  • 詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義

    詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義

    下面小編就為大家分享一篇詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義,具有非常好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • C++ atoi()函數(shù)用法案例詳解

    C++ atoi()函數(shù)用法案例詳解

    這篇文章主要介紹了C++ atoi()函數(shù)用法案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Visual?Studio?2022?激活碼(親測(cè)可用)

    Visual?Studio?2022?激活碼(親測(cè)可用)

    在?Visual?Studio?2019?的基礎(chǔ)上,新版集成開發(fā)壞境提供了非常多的改進(jìn),包括對(duì)?64?位、.NET?6?的支持,為核心調(diào)試器提供更好的性能。本文給大家分享Visual?Studio?2022?激活碼,需要的朋友參考下吧
    2021-12-12
  • C++版本基于ros將文件夾中的圖像轉(zhuǎn)換為bag包

    C++版本基于ros將文件夾中的圖像轉(zhuǎn)換為bag包

    這篇文章主要介紹了C++版本基于ros將文件夾中的圖像轉(zhuǎn)換為bag包,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • C語言實(shí)現(xiàn)推箱子項(xiàng)目

    C語言實(shí)現(xiàn)推箱子項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)推箱子項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Qt控件之QLabel用法及技巧

    Qt控件之QLabel用法及技巧

    QLabel是Qt中的一個(gè)控件類,用于顯示文本或圖像的控件類之一,本文主要介紹了Qt控件之QLabel用法及技巧,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10

最新評(píng)論