【问题标题】:LCM algorithm without prime numbers time complexity无素数时间复杂度的 LCM 算法
【发布时间】:2020-10-13 01:26:28
【问题描述】:

在没有素数的情况下计算 LCM 的最差时间复杂度是多少? 我的 C++ 算法:

int a, b, a2, b2;
cin >> a;
cin >> b;
a2 = a;
b2 = b;

while(a!=b) {
    if(a>b) b+=b2;
    if(b>a) a+=a2;
}
cout << a << " X " << b << endl;

【问题讨论】:

    标签: algorithm time-complexity


    【解决方案1】:

    在最坏的情况下,您的 LCM 可能是a*b
    因此,在这种最坏的情况下,在 while 循环中计算 LCM 的过程中,将 a 增加到 LCM 的步数是 (a*b - a)/a = b-1 并且将 b 增加到 LCM 的步数是 @ 987654326@ = a-1
    所以你的时间复杂度将是O(max(a,b))

    【讨论】:

      【解决方案2】:

      LCM(a,b) 是 a*b/GCD(a,b)

      GCD(a,b) 可以用 Euclid's algorithmthe binary GCD algorithm 在 O(log(a+b)) 时间内计算出来,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-29
        • 2012-05-09
        • 1970-01-01
        • 1970-01-01
        • 2015-10-09
        • 2013-12-31
        相关资源
        最近更新 更多