網站首頁 編程語言 正文
輾轉相除法求最大公約數和最小公倍數
輾轉相除法數學原理
輾轉相除法也稱歐幾里得算法,是用來求兩個正整數的最大公約數的算法。接下來我們用實例來解釋一下。假如我們需要求12和21的最大公約數,用輾轉相除法是這樣實現的:
21 / 12 = 1 (余 9)
12 / 9 = 1(余 3)
9 / 3 = 3 (余 0)
至此,得到21與12的最大公約數為3(注意:這里的3是第二個式子取余得到的3,而非最后一個式子相除得到的),然后把兩個數相乘再除以最大公約數就可以得到最小公倍數:(21*12)/ 3 = 84
python代碼實現
接下來我們用python代碼來實現這樣一道題目:
題目:輸入兩個正整數,求其最大公約數和最小公倍數。
def func(m,n):
? ? a = m
? ? b = n
? ? # 默認m>n,若不是,則交換
? ? if m < n:
? ? ? ? m,n = n,m
? ? while n != 0:
? ? ? ? # 對m除n取余
? ? ? ? r = m % n
? ? ? ? m = n
? ? ? ? n = r
? ? return m,(a*b)/m
print("正整數m與n的最大公約數與最小公倍數分別為:",func(12,21))
正整數m與n的最大公約數與最小公倍數分別為: (3, 84.0)
用遞歸的方式實現
def rec(m,n):
? ? # 默認m>n,若不是,則交換
? ? if m < n:
? ? ? ? m,n = n,m
? ? # 終止條件 ? ?
? ? if n == 0:
? ? ? ? return m,(a*b)/m
? ? # 遞歸部分
? ? return rec(n,m%n)
a = 12
b = 21
print("正整數m與n的最大公約數與最小公倍數分別為:",rec(12,21))
正整數m與n的最大公約數與最小公倍數分別為: (3, 84.0)
Python3 20.輾轉相除法
算法分析
1.算法定義為:在有限的步驟內解決數學問題的程序,即為了解決某項工作或某個問題,所需要有限數量的機械性或重復性指令與計算步驟。
2.最大公約數:可整除兩個整數的最大整數。
3.用兩個數中較大的整數除以較小的數,求得商和余數。
源代碼
# coding:gbk
Num_1 = int(input("請輸入一個整數: "))
Num_2 = int(input("請輸入一個整數: "))
if Num_1 < Num_2:
Tmp_Num = Num_1 # 是交換而不是賦值
Num_1 = Num_2
Num_2 = Tmp_Num
while Num_2 != 0:
Tmp_Num = Num_1 % Num_2
Num_1 = Num_2
Num_2 = Tmp_Num
print('輸出這兩個整數的最大公約數:', Num_1)
結果截圖
原文鏈接:https://blog.csdn.net/qq_34184505/article/details/116793161
- 上一篇:go語言中的協程詳解_Golang
- 下一篇:Go語言通道之無緩沖通道_Golang
相關推薦
- 2023-03-15 pandas將Series轉成DataFrame的實現_python
- 2022-03-19 Docker?link實現容器互聯的方式_docker
- 2023-05-22 python常用時間庫time、datetime與時間格式之間的轉換教程_python
- 2022-05-27 使用Jedis線程池returnResource異常注意事項_Redis
- 2022-08-23 python的自變量選擇(所有子集回歸,后退法,逐步回歸)_python
- 2023-01-11 Pytorch可視化(顯示圖片)及格式轉換問題_python
- 2023-03-23 Pandas分組聚合之使用自定義函數方法transform()、apply()_python
- 2022-10-26 Golang?手寫一個簡單的并發任務?manager_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支