找两数最大公因数,最小公倍数

1.找两数最大公因数

#方法一:
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 跳出循环,结束查找过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值