Gigi233 发表于 2023-3-12 16:07:47

我的方法有什么问题吗?谁能教教我?

在一个网站上做题,他说我的做法太复杂?谁能教教我
n1=max(a,b)
n2=min(a,b)
i = n1 // n2
while True:
    n=n2*i
    if n%n1==0:
      break
print(n)

Gigi233 发表于 2023-3-12 16:08:30

求最小公倍数

tommyyu 发表于 2023-3-12 17:19:58

本帖最后由 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:44

什么网站可以做题?想练练手,找不到题。

qq1151985918 发表于 2023-3-13 00:24:43

君无泪 发表于 2023-3-13 00:02
什么网站可以做题?想练练手,找不到题。

力扣了解一下

君无泪 发表于 2023-3-13 07:27:21

qq1151985918 发表于 2023-3-13 00:24
力扣了解一下

多谢

zhangjinxuan 发表于 2023-3-13 07:33:35

如果 A,B 都是 一百万 以内的,那么这个就是对的,但是,你忘了i++

如果都是那种 一百万以上的,可以参照楼上的辗转相除法

Gigi233 发表于 2023-3-13 16:43:56

君无泪 发表于 2023-3-13 00:02
什么网站可以做题?想练练手,找不到题。

我用的这个叫pythontip

Gigi233 发表于 2023-3-13 16:44:20

tommyyu 发表于 2023-3-12 17:19
去搜搜辗转相除法
你的复杂度是 O(ab) 的,辗转相除法的复杂度不到 O(a)

好的 我研究一下 非常感谢!

Gigi233 发表于 2023-3-13 16:45:06

zhangjinxuan 发表于 2023-3-13 07:33
如果 A,B 都是 一百万 以内的,那么这个就是对的,但是,你忘了i++

如果都是那种 一百万以上的,可以参 ...

好的,我学习一下!

Gigi233 发表于 2023-3-13 23:52:48

tommyyu 发表于 2023-3-12 17:19
去搜搜辗转相除法
你的复杂度是 O(ab) 的,辗转相除法的复杂度不到 O(a)

想问下b==0是啥意思呀
页: [1]
查看完整版本: 我的方法有什么问题吗?谁能教教我?