# 实例
# 数学问题
# 判断奇偶数
所有的偶数都能被 2 整除,所以当一个偶数被 2 整除后它的余数为 0 ,我们可以抓住这一特性,来实现判断奇偶数的功能。话不多,上代码
num = eval(input()) # 输入要判断的值
if num % 2 == 0:
print(f"{num}是偶数")
else:
print(f"{num}是奇数")
# 斐波那契额数列
斐波那契数列的前几个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 其递推公式是
其中
- 使用递归的方式实现
递归比较直观,但效率低
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
- 使用迭代的方式实现
通过循环实现斐波那契数列,效率较高
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b
- 通过生成器实现
生成器实现可以生成斐波那契数列的无限序列,按需取值
def fibonacci_generator():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
# 测试
fib = fibonacci_generator()
for _ in range(11):
print(next(fib), end=' ') # 输出 0 1 1 2 3 5 8 13 21 34 55
# 求最大公约数
欧几里得算法
def gcd(a, b):
while b:
a, b = b, a % b
return a
print(gcd(48, 18)) # 输出 6
根据数学原理可知,多个数求最大公约数满足结合律
# 任意进制转十进制
通过以下图片展示了二进制、八进制、十六进制转化为十进制的过程,将数的每一位从左到右开始乘进制数的幂次,从0次幂依次递增,然后将每一位乘出的结果相加求和的结果就是该数转换为10进制后的值。
提示
之所以得到的值是十进制数,本质上是因为运算时用的是逢十进一的运算法则,如果运算法则是逢八进一那么求出来的值就是八进制数;同理,如果是逢十六进一那么求出来的值就是十六进制数。
def toDEC(num,scale):
pow = 0
sum = 0
a = {
'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14,
'F': 15, 'G': 16, 'H': 17, 'I': 18, 'J': 19,
'K': 20, 'L': 21, 'M': 22, 'N': 23, 'O': 24,
'P': 25, 'Q': 26, 'R': 27, 'S': 28, 'T': 29,
'U': 30, 'V': 31, 'W': 32, 'X': 33, 'Y': 34,
'Z': 35
}
for digit in num[::-1]:
if scale >= 16:
if digit.upper() in a:
digit = a[digit.upper()]
else:
digit = int(digit)
else:
raise ValueError("进制错误")
sum = sum + int(digit) * (scale ** pow)
pow = pow + 1
return sum
print(toDEC("110",2))