Stein’s Algorithm for finding GCD

# Iterative Python 3 program to
# implement Stein's Algorithm

# Function to implement
# Stein's Algorithm


def gcd(a, b):

    # GCD(0, b) == b; GCD(a, 0) == a,
    # GCD(0, 0) == 0
    if (a == 0):
        return b

    if (b == 0):
        return a

    # Finding K, where K is the
    # greatest power of 2 that
    # divides both a and b.
    k = 0

    while(((a | b) & 1) == 0):
        a = a >> 1
        b = b >> 1
        k = k + 1

    # Dividing a by 2 until a becomes odd
    while ((a & 1) == 0):
        a = a >> 1

    # From here on, 'a' is always odd.
    while(b != 0):

        # If b is even, remove all
        # factor of 2 in b
        while ((b & 1) == 0):
            b = b >> 1

        # Now a and b are both odd. Swap if
        # necessary so a <= b, then set
        # b = b - a (which is even).
        if (a > b):

            # Swap u and v.
            temp = a
            a = b
            b = temp

        b = (b - a)

    # restore common factors of 2
    return (a << k)


# Driver code
a = 34
b = 17

print("Gcd of given numbers is ", gcd(a, b))

# This code is contributed by Nikita Tiwari.

https://www.geeksforgeeks.org/steins-algorithm-for-finding-gcd/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值