|
发表于 2021-9-15 12:57:58
|
显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-15 12:59 编辑
最大公因數/最大公約數 Highest Common Factor/Greatest Common Divisor (gcd)
範例:
54 的正因數為:1, 2, 3, 6, 9, 18, 27, 54
24 的正因數為:1, 2, 3, 4, 6, 8, 12, 24
54 和 24 的共同公因數:1, 2, 3, 6
54 和 24 的最大公因數為:6
代碼:(沒有任何導入模塊)
- # 最大公因數/大公約數
- # Highest Common Factor/Greatest Common Divisor (gcd)
- def factor(num: int) -> int:
- for n in range(1, num+1):
- if not (num%n):
- yield n
- a = int(input("輸入一個整數 a:"))
- b = int(input("輸入一個整數 b:"))
- gcd = max(set(factor(a))&set(factor(b)))
- print(f"{a} 和 {b} 最大公約數:{gcd}")
复制代码
最小公倍數 Least Common Multiple (lcm)
範例:
18 的倍數為:18, 36, 54, 72, 90, 108, 126, 144...
12 的倍數為:12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132...
18 和 12 的最小公倍數:36
代碼:(沒有任何導入模塊)
- # 最小公倍數
- # Least Common Multiple (lcm)
- a = int(input("輸入一個整數 a:"))
- b = int(input("輸入一個整數 b:"))
- x, y = max(a, b), min(a, b)
- while True:
- if x == y:
- print(f"{a} 和 {b} 最小公倍數:{x}")
- break
- while y < x:
- y += min(a, b)
- while x < y:
- x += max(a, b)
复制代码
代碼:導入模塊(math)
- import math
- a = int(input("輸入一個整數 a:"))
- b = int(input("輸入一個整數 b:"))
- print(f"{a} 和 {b} 最大公約數:{math.gcd(a, b)}")
- print(f"{a} 和 {b} 最小公倍數:{math.lcm(a, b)}")
复制代码 |
|