首页 > 其他 > 详细

最大公约数和数字n倍相加

时间:2019-10-18 00:08:34      阅读:62      评论:0      收藏:0      [点我收藏+]

问题1:编写一个程序计算s=a+aa+aaa+aaaa+...+aa..aa(例如2+22+222+2222+22222)的值,其中a属于正整数且a<=9,要求输入数字n和相加的数的个数m

技术分享图片
def get_sum(n, m):
    res = 0
    while m > 0:
        res += int(1 * m) * n
        m -= 1
    return res


print(get_sum(2, 5))
python实现

问题2:求两个数的最大公约数。

辗转相除法:欧几里德算法又称辗转相除法。以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。

例如:1997 / 615 = 3 (余 152)

615 / 152 = 4(余7)

152 / 7 = 21(余5)

7 / 5 = 1 (余2)

5 / 2 = 2 (余1)

2 / 1 = 2 (余0)

至此,最大公约数为1。

技术分享图片
def get_max_common_num(m, n):
    if m == 0 or n == 0:
        raise ValueError
    while n != 0:
        m, n = n, m % n
    return m


print(get_max_common_num(1997, 615))
print(get_max_common_num(8251, 6105))
辗转相除法

 

最大公约数和数字n倍相加

原文:https://www.cnblogs.com/walle-zhao/p/11695798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!