国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言—最大公約數(shù)和最小公倍數(shù)

這篇具有很好參考價值的文章主要介紹了C語言—最大公約數(shù)和最小公倍數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者主頁:paper jie的博客_CSDN博客-C語言,算法詳解領(lǐng)域博主

本文作者:大家好,我是paper jie,感謝你閱讀本文,歡迎一建三連哦。

本文錄入于《算法詳解》專欄,本專欄是針對于大學生,編程小白精心打造的。筆者用重金(時間和精力)打造,將算法基礎(chǔ)知識一網(wǎng)打盡,希望可以幫到讀者們哦。

其他專欄:《系統(tǒng)解析C語言》《C語言》《C語言-語法篇》

內(nèi)容分享:本期將對求最小公倍數(shù)和最大公因數(shù)進行詳細的講解,各位看官姥爺快搬好小板凳坐好叭。

? ? -------- 不要998,不要98,只要一鍵三連,三連買不了吃虧,買不了上當

目錄

最大公約數(shù)和最小公倍數(shù)的定義

實現(xiàn)的基本思想

具體代碼


最大公約數(shù)和最小公倍數(shù)的定義

如果數(shù)a能被數(shù)b整除,a就叫做b的倍數(shù),b就叫做a的約數(shù)。約數(shù)和倍數(shù)都表示一個整數(shù)與另一個整數(shù)的關(guān)系,不能單獨存在。如只能說16是某數(shù)的倍數(shù),2是某數(shù)的約數(shù),而不能孤立地說16是倍數(shù),2是約數(shù)。最大公約數(shù)就是最大的約數(shù)。公倍數(shù)是指在兩個或兩個以上的 自然數(shù) 中,如果它們有相同的 倍數(shù) ,這些倍數(shù)就是它們的公倍數(shù)。 公倍數(shù)中最小的,就稱為這些 整數(shù) 的 最小公倍數(shù)

實現(xiàn)的基本思想

求最大公因數(shù)我們采用輾轉(zhuǎn)相除法。什么是輾轉(zhuǎn)相除法呢?

在數(shù)學中,輾轉(zhuǎn)相除法,又稱歐幾里得算法,是求取最大公約數(shù)的一種算法。輾轉(zhuǎn)相除法首次出現(xiàn)于歐幾里得的《幾何原本》中的第Ⅶ卷,書中的命題ⅰ和命題ⅱ所描述的就是輾轉(zhuǎn)相除法,而在中國,輾轉(zhuǎn)相除法最早出現(xiàn)在《九章算法》中。它有一個經(jīng)典的幾何描述:

輾轉(zhuǎn)相除法既然起源于希臘,那么就從希臘開始講起,希臘人非常喜歡從圖形或者說是用幾何的角度去看待問題,很多問題希臘數(shù)學家都習慣先去思考能否將其轉(zhuǎn)化為直觀的幾何問題再進行求解,希臘數(shù)學家甚至認為:所有的數(shù)字都與一個幾何概念有關(guān)系。我們今天所說的「有理數(shù)」和「無理數(shù)」這兩個概念,英文是將其翻譯成「Rational number」和「Irrantional number」的,而這兩個單詞的拉丁文詞源(Ratio)的原意則是成比例的意思。所以很自然地,希臘數(shù)學家在面對求兩數(shù)的最大公約數(shù)這個問題的時候,也首先去思考這個問題是否能通過將其轉(zhuǎn)化成一個幾何問題來處理。在經(jīng)過一些嘗試之后,這一設想最終實現(xiàn)了,希臘數(shù)學家是這樣處理的,將所要求取最大公約數(shù)的兩個數(shù)字A、B分別作為矩形的兩條邊,就形成了一個矩形,這樣,原來的問題就被轉(zhuǎn)化了。

還記得最大公約數(shù)的定義嗎?所謂最大公約數(shù),就是指兩個數(shù)字所共同擁有的約數(shù)中最大的那一個。這種描述是以數(shù)字的方式進行描述的,這種數(shù)字形式的描述太過抽象,使人不好理解,因為人類數(shù)十萬年來的生活導致人類的認知方式會更偏向於圖形這種更加直觀的方式。那么現(xiàn)在問題就變成了:如何將最大公約數(shù)問題從用數(shù)字進行描述,轉(zhuǎn)化為圖形或者說幾何形式的描述。希臘數(shù)學家是這樣處理的,即:以所要求取最大公約數(shù)的兩個數(shù)字為邊構(gòu)造一個矩形,然后嘗試在這個矩形中去找到這樣一個正方形,這類正方形能夠沒有縫隙的鋪滿上述矩形,很明顯,這類正方形有很多個的(這里只考慮正整數(shù)邊長),而我們的目標就是找出這類正方形中最大的那一個。所以問題現(xiàn)在就又轉(zhuǎn)化成了:該怎么找到這樣一個正方形?

希臘數(shù)學家是這樣處理的,在我們預先構(gòu)造的矩形中,我們先以矩形的短邊構(gòu)造正方形,然后再去計算這樣的正方形可以在大矩形中「最多」放置多少個,這個計算過程可以用取余的方式進行計算。接下來,我們再用長邊余下的長度構(gòu)建正方形,在去試圖鋪滿剩下未被覆蓋的部分,然后計算這個正方形最多可以放置幾個,直到我們找到這樣一個正方形,這個正方形可以完全鋪滿整個大矩形。那么這個正方形就是我們最終要找的答案,自然而然的,這個正方形的邊長也就是我們要找的兩數(shù)的最大公約數(shù)。

輾轉(zhuǎn)相除法之所以有效是因為其基于一個核心原理,即:兩個數(shù)的最大公約數(shù)等于其中較小的數(shù)字和二者之間余數(shù)的最大公約數(shù)為了更容易理解,可以對這句話進行簡單的分析,以m和n舉例:m%n!=0的話,將n的值賦給m,m%n的余數(shù)賦給n。這樣是一次循環(huán),后面一直循環(huán)以上步驟直到m%n==0,這時n里面的值就是最大公因數(shù)。

C語言—最大公約數(shù)和最小公倍數(shù),算法詳解,c語言,開發(fā)語言

求最小公倍數(shù)我們可以用一個公式:m*n/最大公因數(shù)?

因為 最大公因數(shù)*最小公倍數(shù) = m * n,所以我們知道其中一個就可以求出另一個了。

具體代碼

注意:這里m和n的大小其實不用糾結(jié),因為m%n時它們的位置就會變的正常,比如:m=2 n=3 它們一旦采用輾轉(zhuǎn)相除法,就會變成m=3 n=2.

int main()
{
	int m = 0;
	int n = 0;
	//要輸入的值
	scanf("%d %d", &m, &n);
	//用a b另存一份m n的值,等下求最小公倍數(shù)可以用
	int a = m;
	int b = n;
	//m%n==0 時跳出
	while (m % n != 0)
	{
		int tmp = m % n;
		m = n;
		n = tmp;
	}
	printf("最大公因數(shù)=%d\n", n);
	//最大公約數(shù)*最小公倍數(shù)=m*n
	//知一個就可以求另一個
	printf("最小公倍數(shù)=%d\n", a * b / n);
	return 0;
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-548917.html

到了這里,關(guān)于C語言—最大公約數(shù)和最小公倍數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • C語言——輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)

    C語言——輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)

    目錄 1.最大公約數(shù)求法 1.1輾轉(zhuǎn)相除法 1.2相減法 2.最小公倍數(shù)求法 3.代碼實現(xiàn) 4.結(jié)果展示 1.1輾轉(zhuǎn)相除法 設有兩整數(shù)a和b: a%b得余數(shù)c 若c==0,則b即為兩數(shù)的最大公約數(shù) 若c!=0,則a=b,b=c,再回去執(zhí)行第一步。 例如:求27和15的最大公約數(shù)過程為: 27÷15 余12 15÷12 余3 12÷3 余0 因

    2024年02月01日
    瀏覽(14)
  • C語言——輸入兩個正整數(shù) m 和 n。求其最大公約數(shù)和最小公倍數(shù)。

    1、首先,程序通過printf函數(shù)提示用戶輸入兩個正整數(shù)m和n,然后使用scanf函數(shù)接收用戶的輸入并將值分別存儲到變量m和n中。 2、接下來,程序進入一個for循環(huán),從1開始遍歷直至i等于較小的數(shù)(m或n),檢查當前數(shù)值i是否能同時整除m和n。如果i既能被m整除又能被n整除(即滿足

    2024年02月03日
    瀏覽(21)
  • 最大公約數(shù)和最小公倍數(shù)問題

    等差數(shù)列 藍橋杯192 gcd問題 題目描述 數(shù)學老師給小明出了一道等差數(shù)列求和的題目。但是粗心的小明忘記了一 部分的數(shù)列,只記得其中?N?個整數(shù)。 現(xiàn)在給出這?N?個整數(shù),小明想知道包含這?N?個整數(shù)的最短的等差數(shù)列有幾項? 思路:求出每一項之差的最大公約數(shù),以這個

    2023年04月09日
    瀏覽(26)
  • C++ 最大公約數(shù)與最小公倍數(shù)

    C++ 最大公約數(shù)與最小公倍數(shù)

    (一)簡單的兩個正整數(shù)? 求 最大公約數(shù) (引入專題) 思路: 根據(jù) “歐幾里得算法”? ,即 “輾轉(zhuǎn)相除法” 原理如下: 題意: 求出? ?a? , b? 兩個正整數(shù)的最大公約數(shù) 設? k = a / b,? ?r = a % b 即? ? a = k * b + r 又設? d? 為 a 和 b 的一個公約數(shù) 那么由? r = a - k * b,? 可

    2024年02月06日
    瀏覽(21)
  • P1029 最大公約數(shù)和最小公倍數(shù)問題

    3 2 1 上題目鏈接: P1029 [NOIP2001 普及組] 最大公約數(shù)和最小公倍數(shù)問題 本小蒟蒻的原始思路就是枚舉所有范圍內(nèi)的數(shù),分別求出他們的最大公約數(shù)和最小公倍數(shù),再看是否滿足題意。 于是就有了以下一言難盡的東西(;′⌒`)↓ 皇天不負有心人,收到了2個TLE,其他全WA 自我反

    2024年02月19日
    瀏覽(24)
  • 【Python 隨練】求最大公約數(shù)和最小公倍數(shù)

    輸入兩個正整數(shù) m 和 n,求其最大公約數(shù)和最小公倍數(shù)。 在本篇博客中,我們將解決一個常見的數(shù)學問題:求兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)。我們將提供問題的解析,并給出一個完整的代碼示例來計算最大公約數(shù)和最小公倍數(shù)。 給定兩個正整數(shù)m和n,我們需要求它們

    2024年02月09日
    瀏覽(38)
  • C++求最大公約數(shù)和最小公倍數(shù)的方法

    每次遇到最大公約數(shù)和最小公倍數(shù)時總是忘記,這里總結(jié)了兩種求最大公約數(shù)和最小公倍數(shù)的方法。 歐幾里得算法是求解兩個數(shù)的最大公約數(shù)的一種常用方法。該算法基于以下原理:兩個整數(shù)的最大公約數(shù)等于其中較小數(shù)和兩數(shù)的余數(shù)之間的最大公約數(shù)。可以通過遞歸調(diào)用該

    2024年02月15日
    瀏覽(25)
  • 求其最大公約數(shù)和最小公倍數(shù),一行代碼完成

    題目:輸入兩個正整數(shù) m 和 n,求其最大公約數(shù)和最小公倍數(shù)。 求出最大公約數(shù)就行,最小公倍數(shù)用m*n除以最大公約數(shù)就行

    2024年02月05日
    瀏覽(26)
  • 左手Python 右手R —— 最大公約數(shù)和最小公倍數(shù)

    左手Python 右手R —— 最大公約數(shù)和最小公倍數(shù)

    ??此專欄為python與R語言對比學習的文章;以通俗易懂的小實驗,帶領(lǐng)大家深入淺出的理解兩種語言的基本語法,并用以實際場景!感謝大家的關(guān)注,希望對大家有所幫助。 ??“博觀而約取,厚積而薄發(fā)!”謹以此言,望諸君共勉 ??本文針對數(shù)學問題“ 最大公約數(shù)、最

    2023年04月21日
    瀏覽(25)
  • C語言--編寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),再主函數(shù)中輸入兩個整數(shù),調(diào)用它們后輸出結(jié)果。

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包