#方法一:
def func(a,b):
if a==b:
return a
m=min(a,b)
while a%m!=0 or b%m!=0:
m-=1
return m
a=int(input("请输入第一个数:"))
b=int(input("请输入第二个数:"))
s=func(a,b)
print(f'两数的最大公因数为{s}')
这个函数 func 用于计算两个数 a 和 b 的最大公因数。
if a == b:首先检查a和b是否相等,如果相等,则它们的最大公因数
就是它们本身,直接返回 a(或 b)。
m = min(a, b):如果 a 和 b 不相等,将 m 初始化为 a 和 b 中较小的数,
因为最大公因数不会超过 a 和 b 中的较小值。
while a % m!= 0 or b % m!= 0::然后进入一个 while 循环,
只要 a 不能被 m 整除或者 b 不能被 m 整除,就将 m 的值减 1。
return m:当 a 和 b 都能被 m 整除时,此时的 m 就是最大公因数,循环结束并返回 m。
假设输入 a = 12 和 b = 18
1. 首先调用 func(12, 18)。
因为 12 不等于 18,执行 m = min(12, 18),所以 m = 12。
2. 进入 while 循环:
检查 12 % 12 == 0 为 True,但 18 % 12!= 0,所以 while 条件为 True。
m -= 1,此时 m = 11。
检查 12 % 11!= 0 为 True,18 % 11!= 0 也为 True,继续 while 循环。
m -= 1,此时 m = 10。
3. 继续检查,直到 m = 6 时:
12 % 6 == 0 为 True,18 % 6 == 0 也为 True。
此时 while 循环结束,函数返回 6,因为 6 是 12 和 18 的最大公因数。
#方法二:
# 导入数学公式
import math
a=int(input("请输入第一个数:"))
b=int(input("请输入第二个数:"))
print(math.gcd(a, b))
2.找两数最小公倍数
a=int(input("请输入第一个数:"))
b=int(input("请输入第二个数:"))
m=max(a,b)
while a>0 and b>0:
if m%a==0 and m%b==0:
print(f'{a}和{b}的最小公倍数是{m}')
break
else:
m+=1
当用户分别输入 4 和 6 后,a 被赋值为 4,b 被赋值为 6。
接着,通过 m = max(a, b) 找到 a 和 b 中的较大值,这里 m 会被赋值为 6 。
while a > 0 and b > 0::只要 a 和 b 都大于 0,循环就会持续执行。
这个条件是为了确保程序正常运行,只要输入的数是正数,循环就会尝试去寻找它们的最小公倍数。
if m % a == 0 and m % b == 0::在每次循环中,检查当前的 m 是否能同时被 a 和 b 整除。
对于 m = 6,6 % 4!= 0,所以条件不成立。
由于条件不满足,执行 else 分支:m += 1,此时 m 的值变为 7。
下一次循环,再次检查 7 % 4!= 0 且 7 % 6!= 0,所以 m 继续加 1,变为 8。
当 m = 12 时:
12 % 4 == 0 且 12 % 6 == 0,if 条件成立。
程序执行 print(f'{a}和{b}的最小公倍数是{m}'),
输出 4和6的最小公倍数是12 ,然后通过 break 跳出循环,结束查找过程。