基础数学算法

基础数学

等差数列

等差数列 an 的通项公式:an = a1 + ( n - 1) *d。其中,d为公差,a1为起始项,n为第n项。

等差数列求和公式:前n项和公式为:Sn = na1 + n(n - 1) * d / 2

题目:等差数列 2,5,8,11,14。。。。(从 2 开始的 3 为公差的等差数列),输出求等差数列前n项和。

n = int(input())
print(int(n*2+n*(n-1)*3/2))

求最大公约(因)数

辗转相除法求最大公约数:
基础数学算法
基础数学算法

# 辗转相除法求最大公约数
a = 20
b = 12

def gcd(m, n):
	#  递归结束条件:如果余数为0,则返回n
    if m % n == 0:
        return n
	# 将规模缩小:递归求n和余数的最大公约数
    return gcd(n, m % n)

gcd(a, b)

求最小公倍数

算法:(a,b最小公倍数) = a*b / (a,b最大公约数)

# 使用辗转相除法求最大公约数,然后再求最小公倍数

expression = input().split(' ')
a = int(expression[0])
b = int(expression[1])

# 将a设置为a,b中较大的数
if a < b:
    a, b = b, a

# 辗转相除法求最大公约数
def gcd(m, n):
    if m % n == 0:
        return n

    return gcd(n, m % n)

print(int(a*b / gcd(a, b)))
上一篇:6-8 使用函数求最大公约数 (10 分)


下一篇:Elasticsearch(2):索引详谈