最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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


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

       設(shè)有兩個數(shù)num1和num2,假設(shè)num1比較大。令余數(shù)r = num1 % num2。
       當(dāng)r == 0時,即num1可以被num2整除,顯然num2就是這兩個數(shù)的最大公約數(shù)。
       當(dāng)r != 0時,令num1 = num2(除數(shù)變被除數(shù)),num2 = r(余數(shù)變除數(shù)),再做 r = num1 % num2。遞歸,直到r == 0。
       以上數(shù)學(xué)原理可以用具體的兩個數(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ù)的方法之上。因為最小公倍數(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);//遞歸   
}


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

相關(guān)文章

  • 詳解C++動態(tài)內(nèi)存管理

    詳解C++動態(tài)內(nèi)存管理

    這篇文章主要為大家詳細(xì)介紹了C++中動態(tài)內(nèi)存管理相關(guān)資料,文中示例代碼講解詳細(xì),對我們學(xué)習(xí)C++具有一定幫助,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)
    2023-05-05
  • C語言指針引用數(shù)組案例講解

    C語言指針引用數(shù)組案例講解

    這篇文章主要介紹了C語言指針引用數(shù)組案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C++新特性詳細(xì)分析基于范圍的for循環(huán)

    C++新特性詳細(xì)分析基于范圍的for循環(huán)

    C++11這次的更新帶來了令很多C++程序員期待已久的for?range循環(huán),每次看到j(luò)avascript,?lua里的for?range,心想要是C++能有多好,心里別提多酸了。這次C++11不負(fù)眾望,再也不用羨慕別家人的for?range了。下面看下C++11的for循環(huán)的新用法
    2022-04-04
  • C語言打印各種圖案實例代碼

    C語言打印各種圖案實例代碼

    大家好,本篇文章主要講的是C語言打印各種圖案實例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言在頭文件中定義const變量詳解

    C語言在頭文件中定義const變量詳解

    這篇文章主要介紹了C語言在頭文件中定義const變量詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C/C++中退出線程的四種解決方法

    C/C++中退出線程的四種解決方法

    本篇文章是對C/C++中退出線程的四種解決方法進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++內(nèi)存四區(qū)之代碼區(qū)、全局區(qū)、棧區(qū)和堆區(qū)

    C++內(nèi)存四區(qū)之代碼區(qū)、全局區(qū)、棧區(qū)和堆區(qū)

    C++編譯器會把代碼直接分為四個小區(qū),弄懂這四小區(qū)對我們理解內(nèi)存有所幫助,所以下面這篇文章主要給大家介紹了關(guān)于C++內(nèi)存四區(qū)之代碼區(qū)、全局區(qū)、棧區(qū)和堆區(qū)的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • c++ String去除頭尾空格的方法

    c++ String去除頭尾空格的方法

    這篇文章主要介紹了c++ String去除頭尾空格的方法,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • C++多字節(jié)字符與寬字節(jié)字符相互轉(zhuǎn)換

    C++多字節(jié)字符與寬字節(jié)字符相互轉(zhuǎn)換

    最近在C++編程中經(jīng)常遇到需要多字節(jié)字符與寬字節(jié)字符相互轉(zhuǎn)換的問題,自己寫了一個類來封裝wchar_t與char類型間的轉(zhuǎn)換
    2012-11-11
  • C/C++?for?語句的要點與注意事項小結(jié)

    C/C++?for?語句的要點與注意事項小結(jié)

    C/C++ 中的?for?語句是一種常用的循環(huán)結(jié)構(gòu),用于重復(fù)執(zhí)行一段代碼,直到滿足某個條件為止,這篇文章主要介紹了C/C++?for?語句的要點與注意事項,需要的朋友可以參考下
    2024-06-06

最新評論

荣昌县| 黄石市| 喜德县| 凤山市| 余干县| 定南县| 屯留县| 漠河县| 隆德县| 长泰县| 赫章县| 修文县| 阿瓦提县| 阳信县| 民权县| 武城县| 炉霍县| 大厂| 斗六市| 克拉玛依市| 彭阳县| 阳城县| 环江| 察雅县| 当阳市| 宁德市| 左贡县| 枞阳县| 深水埗区| 滕州市| 澜沧| 汨罗市| 阿拉善左旗| 库尔勒市| 富锦市| 昌都县| 临沂市| 鲜城| 南通市| 柘城县| 鄂尔多斯市|