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

【C語言】一篇博客帶你弄懂最大公約數(shù)和最小公倍數(shù)

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

前言

我們在C語言的學(xué)習(xí)中,經(jīng)常會遇到這樣一些數(shù)學(xué)題目,良好掌握這些題目有利于我們理解和學(xué)習(xí)C語言,話不多說,直接進(jìn)入主題最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

什么是最大公約數(shù)和最小公倍數(shù)

最大公約數(shù):

首先我們舉個例子,比如12 和16,12的約數(shù)有(1,2 ,3,4,6,12),16的約數(shù)有(1,2,4,8,16)公約數(shù)就是兩個數(shù)共同的約數(shù),(1,2,4)而公約數(shù)中最大的就是最大公約數(shù)。

最小公倍數(shù)

我們同樣舉個例子,比如12和16,我們將163=48,124=48,這是兩個數(shù)第一次有倍數(shù)相等關(guān)系,就叫48是最小公倍數(shù)

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

最大公約數(shù)與最小公倍數(shù)的公式

最大公約數(shù) —— Greatest Common Divisor(GCD)
最小公倍數(shù) —— Leatest Common Multiple(LCM)

假設(shè)a和b是我們已知的數(shù),那么 就存在一個公式。
公式展示 最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

a ? b = G C D ? L C M a*b=GCD*LCM a?b=GCD?LCM

這與我們的路程公式很相似,我們可以類比記憶,路程=速度*時間
所以我們只要求出其中的一個就行,求出GCD 就可以通過公式求出LCM,
求出LCM就可以通過公式求出GCD。

求最大公約數(shù)方法

方法一:暴力窮舉法

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

細(xì)節(jié)講解: 我們知道最大公約數(shù)是約數(shù)中能同時整除兩數(shù),并且是最先整除的,那我們就可以一個一個試。我們可以將l兩個數(shù)中小的那個賦給tmp,為什么呢?因?yàn)槲覀冋易畲蠊稊?shù)時最大也不會超過a,b兩個數(shù)中最小的那個。
比如16 和12 ,我們肯定是從12往下找,而不是還要在16~12之間浪費(fèi)時間。 我們來看看代碼

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int tmp = a > b ? b : a;
	while (1)
	{
		if (a % tmp == 0 && b % tmp == 0)
		{
			printf("最大公約數(shù)是%d", tmp);
			break;
		}
		else
		tmp--;
	}
	return 0;
}

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

方法二:輾轉(zhuǎn)相除法

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

我們來看流程圖

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

解析:如果我們有a,b a = 24 b = 18 ,我們先讓 24 % 18 = 6 ,
接下來我們讓 18 % 6 = 0 ;剛好符合我們流程圖中藍(lán)色框框的條件,這樣就能確定 6 就是最大公倍數(shù)。如果是18 % 24 呢?最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	while (1)
	{
		int c = a % b;
		if (0 == a % b)
		{
			printf("%d就是最大公約數(shù)", b);
			break;
		}
		else
		{
			a = b ; 
			b = c;
		}
	}
	return 0;
}

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

方法三:更相減損術(shù)

《九章算術(shù)》是中國古代的數(shù)學(xué)專著,其中的“更相減損術(shù)”可以用來求兩個數(shù)的最大公約數(shù)最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

流程圖:
最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

用更相減損術(shù)求98與63的最大公約數(shù)。

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

我們只要跟著流程圖走,然后一直改變 a 和 b 的值然后直至a b 相等就行,a b 相等時的那個數(shù)就是最大公倍數(shù),下面給出代碼

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	while (1)
	{
		if (a == b)
		{
			printf("最大公倍數(shù)是%d", a);
			break; 
		}
		if (a > b)
		{
			a = a - b;
		}
		if (b > a)
		{
			b = b - a;
		}
	}
	return 0;
}

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

求最小公倍數(shù)的方法

方法一:公式法

a ? b = G C D ? L C M a*b=GCD*LCM a?b=GCD?LCM

所以我們只要求出其中的一個就行,求出GCD 就可以通過公式求出LCM,
我們上面已經(jīng)介紹了三種求GCD的方法,直接用公式也是可以的。最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

方法二:暴力窮舉法

我們知道最小公倍數(shù)就是能夠同時整除我們已知的兩個數(shù)的數(shù),而且我們可以從兩個數(shù)中更大的開始,比如說求45和30的最小公倍數(shù)。
我們肯定是從45 往上找。
由于方法比較暴力我們就直接看代碼吧!最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int c = a > b ? a : b;
	while (1)
	{
		if (0 == c % a && 0 == c % b)
		{
			printf("最小公倍數(shù)是%d", c);
			break;
		}
		
		c++;
	}
	return 0;
}

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

方法三:疊乘法

方法講解:
已知兩個數(shù)的公倍數(shù)一定與這兩個數(shù)存在倍數(shù)關(guān)系,那么求解最小公倍數(shù)我們就可以將其中一個數(shù)依次擴(kuò)大1倍、2倍、3倍……直到出現(xiàn)第一個擴(kuò)大n倍的數(shù)可以同時整除這兩個數(shù),這個數(shù)就是最小公倍數(shù)。

計算36和270的最小公倍數(shù)

我們直接給出代碼

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	
	int i = 1;
	while (a * i % b != 0)
	{
		i++;
	}
	printf("最小公倍數(shù)是%d", a * i);
	return 0;

}

最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法

最后總結(jié)

通過這篇博客我們知道了求最大公約數(shù)和最小公倍數(shù)的許多方法,當(dāng)然不止這些方法,但是我覺得這些應(yīng)該夠用一段時間了。我是一個博客新手,本文若是有筆誤之處,請大家多多指出。最后寫博客是一件很辛苦但是很有成就感的一件事情。

這篇文章到這里就結(jié)束了,如果有幫到你就請點(diǎn)個贊吧。我的博客是不添加水印的,大家也可以用里面的圖片。最后就麻煩用你的小手點(diǎn)個贊吧,哈哈Thanks?(?ω?)?最大公約數(shù)和最小公倍數(shù),C語言,c語言,算法文章來源地址http://www.zghlxwxcb.cn/news/detail-761810.html

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

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C語言】輾轉(zhuǎn)相除法求最大公約數(shù)(詳解)

    【C語言】輾轉(zhuǎn)相除法求最大公約數(shù)(詳解)

    輾轉(zhuǎn)相除法(又稱歐幾里德算法)是一種用于求解兩個整數(shù)的最大公約數(shù)的方法。本文將使用C語言來實(shí)現(xiàn)輾轉(zhuǎn)相除法,并對其原理進(jìn)行解釋。 輾轉(zhuǎn)相除法的原理非常簡單。假設(shè)有兩個整數(shù)a和b,其中a b。通過對a除以b求余數(shù),得到余數(shù)r1。然后把b除以r1求余數(shù),得到余數(shù)r2。如

    2024年02月07日
    瀏覽(20)
  • 【C語言】兩個整數(shù)最大公約數(shù)和最小公倍數(shù)

    輸入兩個整數(shù),求這兩個數(shù)的最大公約數(shù)和最小公倍數(shù)。 第一種求法(輾轉(zhuǎn)相除法)這個方法代碼較潔簡,我也比較推薦就是剛開始有點(diǎn)比較難了解。 首先,來看看怎么求最大公約數(shù),求最大公約數(shù)需要用到 歐幾里得算法 ,也稱為輾轉(zhuǎn)相除法。算法就是用兩數(shù)中較大的數(shù)

    2024年02月04日
    瀏覽(26)
  • 【c語言】—求最大公約數(shù)和最小公倍數(shù)多種方法

    目錄 一.求最大公約數(shù) 1.枚舉法求最大公約數(shù) 2.輾轉(zhuǎn)相除法 二.求最小公倍數(shù) 1.枚舉法求最小公倍數(shù) 2.簡易法 3.公式法 思路:先求兩個數(shù)中的最小值,最大公約數(shù)不可能大于兩個數(shù)的最小數(shù) 比如6和18,最大公約數(shù)就是6 再如3和9,最大公約數(shù)就是3 然后再從1開始循環(huán)遍歷到最小

    2024年02月08日
    瀏覽(22)
  • C語言入門——求最大公約數(shù)(2種方法超詳細(xì))

    C語言入門——求最大公約數(shù)(2種方法超詳細(xì))

    基本介紹: 最大公約數(shù)(greatest common divisor,簡寫為 gcd ;或highest common factor,簡寫為hcf),指某幾個整數(shù)共有因子中最大的一個。 最大公約數(shù) 能夠整除一個整數(shù)的整數(shù)稱為其的約數(shù)(如5是10約數(shù)); 能夠被一個整數(shù)整除的整數(shù)稱為其的倍數(shù)(如10是5的倍數(shù)); 如果一個數(shù)既

    2024年02月08日
    瀏覽(18)
  • C語言經(jīng)典算法之Euclidean算法求最大公約數(shù)

    目錄 前言 A.建議 B.簡介 一 代碼實(shí)現(xiàn) 二 時空復(fù)雜度 A.循環(huán)實(shí)現(xiàn) a.時間復(fù)雜度(Time Complexity): b.空間復(fù)雜度(Space Complexity): B.遞歸實(shí)現(xiàn) a.時間復(fù)雜度(Time Complexity): b.空間復(fù)雜度(Space Complexity): 三 優(yōu)缺點(diǎn) A.循環(huán)實(shí)現(xiàn) a.優(yōu)點(diǎn): b.缺點(diǎn): c.總結(jié): B.遞歸實(shí)現(xiàn) a.優(yōu)點(diǎn):

    2024年03月26日
    瀏覽(19)
  • C語言:給定兩個數(shù),求這兩個數(shù)的最大公約數(shù)(新思路:輾轉(zhuǎn)相除法)

    C語言:給定兩個數(shù),求這兩個數(shù)的最大公約數(shù)(新思路:輾轉(zhuǎn)相除法)

    從鍵盤 輸入兩個數(shù) , 求 這 兩個數(shù) 的 最大公約數(shù) 。 ? ? ? ? ? ? ? ? ? ?? ?========================================================================= ? ? ? ? ? ? ? ? ? ? ? ? (一). 生成 相關(guān)變量 ; 從鍵盤 輸入兩個數(shù) ; 再 使用 三目操作符(條件操作符) 找出 較小值 。 ? ? ? ?

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

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

    目錄 1.最大公約數(shù)求法 1.1輾轉(zhuǎn)相除法 1.2相減法 2.最小公倍數(shù)求法 3.代碼實(shí)現(xiàn) 4.結(jié)果展示 1.1輾轉(zhuǎn)相除法 設(shè)有兩整數(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、接下來,程序進(jìn)入一個for循環(huán),從1開始遍歷直至i等于較小的數(shù)(m或n),檢查當(dāng)前數(shù)值i是否能同時整除m和n。如果i既能被m整除又能被n整除(即滿足

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

    請使用遞歸算法計算正整數(shù)n和m的最大公約數(shù)GCD(n,m)。 G C D ( n , m ) = { = m , 當(dāng) m = n 且 n m o d m = 0 = G C D ( m , n ) , 當(dāng) n m 時 = G C D ( m , n m o d ?? m ) , 其他 GCD(n,m)=left{begin{matrix} =m,當(dāng) m=n 且 n mod m =0\\\\ =GCD(m,n),當(dāng)nm時\\\\ =GCD(m,n mod m),其他 end{matrix}right. GC D ( n , m ) = ? ? ? ? = m

    2024年02月03日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包