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

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ù)相對應(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("請輸入兩個(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("請輸入兩個(gè)正整數(shù)\n");
    scanf("%d%d", &num1, &num2);
    printf("它們的最小公倍數(shù)為:%d\n", Get_Min_Comm_Multiple(num1, num2));
    return 0;
}

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

如果程序不作處理(不檢測輸入的數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言指針與引用的區(qū)別以及引用的三種用法案例詳解

    C語言指針與引用的區(qū)別以及引用的三種用法案例詳解

    這篇文章主要介紹了C語言指針與引用的區(qū)別以及引用的三種用法案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C++關(guān)于樹的定義全面梳理

    C++關(guān)于樹的定義全面梳理

    樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點(diǎn))按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會(huì)的族譜和各種社會(huì)組織機(jī)構(gòu)都可用樹形象表示,本篇介紹二叉樹的遞歸與非遞歸遍歷的方法
    2022-06-06
  • 通過“回文字算法”復(fù)習(xí)C++語言

    通過“回文字算法”復(fù)習(xí)C++語言

    這篇文章主要介紹了通過“回文字算法”復(fù)習(xí)C++語言的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • C語言超詳細(xì)講解棧與隊(duì)列實(shí)現(xiàn)實(shí)例

    C語言超詳細(xì)講解棧與隊(duì)列實(shí)現(xiàn)實(shí)例

    棧和隊(duì)列,嚴(yán)格意義上來說,也屬于線性表,因?yàn)樗鼈円捕加糜诖鎯?chǔ)邏輯關(guān)系為?"一對一"?的數(shù)據(jù),但由于它們比較特殊,因此將其單獨(dú)作為一章,做重點(diǎn)講解
    2022-03-03
  • C++深入分析講解智能指針

    C++深入分析講解智能指針

    為了解決內(nèi)存泄漏的問題,C++中提出了智能指針。內(nèi)存泄漏的產(chǎn)生原因有很多,即使我們正確的使用malloc和free關(guān)鍵字也有可能產(chǎn)生內(nèi)存泄漏,如在malloc和free之間如果存在拋異常,那也會(huì)產(chǎn)生內(nèi)存泄漏。這種問題被稱為異常安全
    2022-05-05
  • Qt實(shí)現(xiàn)線程與定時(shí)器的方法

    Qt實(shí)現(xiàn)線程與定時(shí)器的方法

    本文主要介紹了Qt實(shí)現(xiàn)線程與定時(shí)器的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言修煉之路悟徹?cái)?shù)組真妙理?巧用下標(biāo)破萬敵下篇

    C語言修煉之路悟徹?cái)?shù)組真妙理?巧用下標(biāo)破萬敵下篇

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個(gè)字符串,使字符串處理更加方便、靈活
    2022-02-02
  • C++深入了解模板的使用

    C++深入了解模板的使用

    這篇文章主要介紹了C++中模板(Template)的詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C語言實(shí)現(xiàn)關(guān)機(jī)小程序

    C語言實(shí)現(xiàn)關(guān)機(jī)小程序

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)關(guān)機(jī)小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Qt+OpenCV實(shí)現(xiàn)目標(biāo)檢測詳解

    Qt+OpenCV實(shí)現(xiàn)目標(biāo)檢測詳解

    這篇文章主要介紹了如何利用Qt和OpenCV中自帶xml文件實(shí)現(xiàn)目標(biāo)檢測,文中的實(shí)現(xiàn)過程講解詳細(xì),感興趣的小伙伴可以動(dòng)手試一試
    2022-03-03

最新評論