zoukankan      html  css  js  c++  java
  • 最大公约数和数字n倍相加

    问题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))
    辗转相除法
  • 相关阅读:
    蓝桥杯_基础训练_龟兔赛跑预测
    大数加法
    Splay!
    topsort
    各种方法
    有时候dfs可以简化各种组合的操作
    组合数学
    重新认识三观
    手速狗还是不行啊。。。
    set和map和pair 转自ACdreamers
  • 原文地址:https://www.cnblogs.com/walle-zhao/p/11695798.html
Copyright © 2011-2022 走看看