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

C語言實(shí)現(xiàn)求解最小公倍數(shù)的算法示例

 更新時(shí)間:2021年12月22日 15:09:27   作者:小輝_Super  
這篇文章主要為大家介紹了C語言如何實(shí)現(xiàn)求解任意兩個(gè)正整數(shù)的最小公倍數(shù),文中采用了窮舉法和定理法。感興趣的小伙伴快來跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧

題目描述

求任意兩個(gè)正整數(shù)的最小公倍數(shù)

問題分析

兩個(gè)或多個(gè)整數(shù)公有的倍數(shù)叫做它們的公倍數(shù),其中除0以外最小的一個(gè)公倍數(shù)就叫做這幾個(gè)整數(shù)的最小公倍數(shù)。整數(shù)a,b的最小公倍數(shù)記為[a,b],同樣的,a,b,c的最小公倍數(shù)記為[a,b,c],多個(gè)整數(shù)的最小公倍數(shù)也有同樣的記號(hào)。

.與最小公倍數(shù)相對(duì)應(yīng)的概念是最大公約數(shù),a,b的最大公約數(shù)記為(a,b)。關(guān)于最小公倍數(shù)與最大公約數(shù),我們有這樣的定理:(a,b)x[a,b]=ab(a,b均為整數(shù))。

——百度百科

我們可以通過兩個(gè)方法求最小公倍數(shù)。

第一種是窮舉法,列舉所以可能的數(shù),直到找到最小的公倍數(shù);第二種是使用最小公倍數(shù)與最大公約數(shù)的一個(gè)定理——兩個(gè)整數(shù)的最小公倍數(shù)等于兩數(shù)之積除以兩個(gè)數(shù)的最大公因數(shù),即(a,b)x[a,b]=ab((a,b)表示a和b的最大公約數(shù),[a,b]表示a和b的最小公倍數(shù),a,b均為整數(shù))

方法一:窮舉法

假設(shè)有兩個(gè)整數(shù)num1和num2,這兩個(gè)整數(shù)的最小公倍數(shù)一定大于等于它們的最大值,同時(shí)小于等于它們的積。

按從小到大的順序遍歷整個(gè)范圍內(nèi)的所有整數(shù),第一個(gè)公因數(shù)即為它們的最小公倍數(shù)。

【不考慮負(fù)數(shù),求負(fù)數(shù)的最小公倍數(shù)本就是無意義的(相當(dāng)于求兩個(gè)正數(shù)的最大公倍數(shù))】

#include <stdio.h>

/**
 * @brief 獲取最小公倍數(shù)(窮舉法)
 * @param num1 第一個(gè)正整數(shù)
 * @param num2 第一個(gè)正整數(shù)
 * @return 返回最小公倍數(shù)
 */
int Get_Min_Comm_Multiple(int num1, int num2)
{
    int i = 0, tmp = 0, mul = 0;
    tmp = num1 > num2 ? num1 : num2; //獲取最大值
    mul = num1 * num2;   //兩數(shù)之積
    for(i = tmp; i <= mul; i++)
    {
        //同時(shí)為num1和num2的倍數(shù)
        if(i % num1 == 0 && i % num2 == 0)
            break;
    }
    return i;
}

int main()
{
    int num1, num2;

    printf("請(qǐng)輸入兩個(gè)正整數(shù)\n");
    scanf("%d%d", &num1, &num2);
    printf("它們的最小公倍數(shù)為:%d\n",Get_Min_Comm_Multiple(num1, num2));
    return 0;
}

運(yùn)行結(jié)果

方法二:定理法

使用定理求最小公倍數(shù)(兩個(gè)整數(shù)的最小公倍數(shù)等于兩數(shù)之積除以兩個(gè)數(shù)的最大公因數(shù)),需要先求出兩個(gè)整數(shù)的最大公因數(shù),最大公因數(shù)這里采用輾轉(zhuǎn)相除法。(最大公因數(shù)的求法可以參考我上一篇文章——第68天:求最大公約數(shù)(使用三種方法)

【不考慮負(fù)數(shù),求負(fù)數(shù)的最小公倍數(shù)本就是無意義的(相當(dāng)于求兩個(gè)正數(shù)的最大公倍數(shù))】

#include <stdio.h>

/**
 * @brief 獲取兩個(gè)正整數(shù)的最大公因數(shù)(輾轉(zhuǎn)相除法)
 * @param num1  第一個(gè)正整數(shù)
 * @param num2  第二個(gè)正整數(shù)
 * @return      最大公因數(shù)
 */
int Get_Max_Comm_Divisor(int num1, int num2)
{
    int remainder = num1 % num2;  //余數(shù)

    while(remainder != 0)
    {
        num1 = num2;      //更新被除數(shù)
        num2 = remainder; //更新除數(shù)
        remainder = num1 % num2; //更新余數(shù)
    }
    return num2;  //最后的除數(shù)即為最大公因數(shù)
}

/**
 * @brief 獲取最小公倍數(shù)(定理法)
 * @param num1 第一個(gè)正整數(shù)
 * @param num2 第一個(gè)正整數(shù)
 * @return 返回最小公倍數(shù)
 */
int Get_Min_Comm_Multiple(int num1, int num2)
{
    /* 最小公倍數(shù) = 兩數(shù)相乘 / 最大公因數(shù) */
    return num1 * num2 / Get_Max_Comm_Divisor(num1, num2);
}

int main()
{
    int num1 = 0, num2 = 0;

    printf("請(qǐng)輸入兩個(gè)正整數(shù)\n");
    scanf("%d%d", &num1, &num2);
    printf("它們的最小公倍數(shù)為:%d\n", Get_Min_Comm_Multiple(num1, num2));
    return 0;
}

運(yùn)行結(jié)果

如果程序不作處理(不檢測(cè)輸入的數(shù)字是否為正數(shù)),此時(shí)輸入負(fù)數(shù),也能返回一個(gè)公倍數(shù),但不是“最小”公倍數(shù),不過求負(fù)數(shù)的最小公倍數(shù)本就是無意義的(相當(dāng)于求兩個(gè)正數(shù)的最大公倍數(shù))。

到此這篇關(guān)于C語言實(shí)現(xiàn)求解最小公倍數(shù)的算法示例的文章就介紹到這了,更多相關(guān)C語言求解最小公倍數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++?電話號(hào)碼的字母組合功能實(shí)現(xiàn)

    C++?電話號(hào)碼的字母組合功能實(shí)現(xiàn)

    這篇文章主要介紹了C++?電話號(hào)碼的字母組合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 詳解如何在C/C++中測(cè)量一個(gè)函數(shù)或功能的運(yùn)行時(shí)間

    詳解如何在C/C++中測(cè)量一個(gè)函數(shù)或功能的運(yùn)行時(shí)間

    本文算是一個(gè)比較完整的關(guān)于在 C/C++ 中測(cè)量一個(gè)函數(shù)或者功能的總結(jié),最后會(huì)演示三種方法的對(duì)比,文章通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • C語言詳解函數(shù)與指針的使用

    C語言詳解函數(shù)與指針的使用

    C語言這門課程在計(jì)算機(jī)的基礎(chǔ)教學(xué)中一直占有比較重要的地位,然而要想突破C語言的學(xué)習(xí),對(duì)函數(shù)和指針的掌握是非常重要的,本文將具體針對(duì)函數(shù)和指針的關(guān)系做詳盡的介紹
    2022-04-04
  • C/C++實(shí)現(xiàn)推箱子小游戲

    C/C++實(shí)現(xiàn)推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了C/C++實(shí)現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++中?‘=default?’及‘?=delete?’的使用

    C++中?‘=default?’及‘?=delete?’的使用

    這篇文章主要介紹了C++中?=default?及?=delete?使用,使用=default和=delete可以控制編譯器默認(rèn)函數(shù)體的使用,下面我們就來看看具體的室友方法吧,需要的朋友也可以參考一下
    2021-12-12
  • C語言結(jié)構(gòu)體(struct)的詳細(xì)講解

    C語言結(jié)構(gòu)體(struct)的詳細(xì)講解

    C語言中,結(jié)構(gòu)體類型屬于一種構(gòu)造類型(其他的構(gòu)造類型還有:數(shù)組類型,聯(lián)合類型),下面這篇文章主要給大家介紹了關(guān)于C語言結(jié)構(gòu)體(struct)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • C/C++實(shí)現(xiàn)跨文件共享全局變量詳解

    C/C++實(shí)現(xiàn)跨文件共享全局變量詳解

    這篇文章主要為大家詳細(xì)介紹了C/C++如何實(shí)現(xiàn)跨文件共享全局變量,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • c語言 兩字符串交叉合并實(shí)例

    c語言 兩字符串交叉合并實(shí)例

    今天小編就為大家分享一篇c語言 兩字符串交叉合并實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • OpenCV實(shí)現(xiàn)圖像膨脹

    OpenCV實(shí)現(xiàn)圖像膨脹

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)圖像膨脹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言?超詳細(xì)講解鏈接器

    C語言?超詳細(xì)講解鏈接器

    在C語言中,一個(gè)重要的思想就是分別編譯,即若干個(gè)源程序能夠在不一樣的時(shí)候單獨(dú)進(jìn)行編譯,而后在恰當(dāng)?shù)臅r(shí)候整合到一塊兒??墒擎溄悠魍ǔJ桥cC編譯器分離的,鏈接器如何作到把若干個(gè)C源程序合并成一個(gè)總體呢,我們一起來看看
    2022-03-03

最新評(píng)論

霍林郭勒市| 富蕴县| 聂拉木县| 玉树县| 大宁县| 来凤县| 金平| 涞源县| 开平市| 锦屏县| 六安市| 西华县| 天台县| 鱼台县| 萨迦县| 枝江市| 原平市| 册亨县| 昌平区| 岳池县| 简阳市| 兴海县| 裕民县| 奇台县| 昌吉市| 武威市| 湟中县| 隆安县| 莎车县| 涞水县| 涟水县| 金川县| 合川市| 疏附县| 通道| 荔波县| 彝良县| 莱西市| 广河县| 九龙城区| 苗栗县|