我的方法有什么问题吗?谁能教教我?
在一个网站上做题,他说我的做法太复杂?谁能教教我n1=max(a,b)
n2=min(a,b)
i = n1 // n2
while True:
n=n2*i
if n%n1==0:
break
print(n) 求最小公倍数 本帖最后由 tommyyu 于 2023-3-12 17:22 编辑
去搜搜辗转相除法a, b = 5, 3
n = a*b # 最小公倍数 = 两数之积 / 最大公约数
a, b = max(a, b), min(a, b)
while True:
if b == 0:
print(n // a) # 最小公倍数 = 两数之积 / 最大公约数
break
a, b = b, a % b
你的复杂度是 O(ab) 的,辗转相除法的复杂度不到 O(a) 什么网站可以做题?想练练手,找不到题。 君无泪 发表于 2023-3-13 00:02
什么网站可以做题?想练练手,找不到题。
力扣了解一下 qq1151985918 发表于 2023-3-13 00:24
力扣了解一下
多谢 如果 A,B 都是 一百万 以内的,那么这个就是对的,但是,你忘了i++
如果都是那种 一百万以上的,可以参照楼上的辗转相除法 君无泪 发表于 2023-3-13 00:02
什么网站可以做题?想练练手,找不到题。
我用的这个叫pythontip tommyyu 发表于 2023-3-12 17:19
去搜搜辗转相除法
你的复杂度是 O(ab) 的,辗转相除法的复杂度不到 O(a)
好的 我研究一下 非常感谢! zhangjinxuan 发表于 2023-3-13 07:33
如果 A,B 都是 一百万 以内的,那么这个就是对的,但是,你忘了i++
如果都是那种 一百万以上的,可以参 ...
好的,我学习一下! tommyyu 发表于 2023-3-12 17:19
去搜搜辗转相除法
你的复杂度是 O(ab) 的,辗转相除法的复杂度不到 O(a)
想问下b==0是啥意思呀
页:
[1]