题目一:数列求和
题目:已知数列1, 2, 4, 8, 16, …,求前n项的和。
解答思路: 这是一个等比数列,公比为2。等比数列的前n项和公式为:S_n = a_1 * (1 - r^n) / (1 - r),其中a_1是首项,r是公比。
def geometric_series_sum(a1, r, n):
return a1 * (1 - r**n) / (1 - r)
# 示例
sum_result = geometric_series_sum(1, 2, 6)
print(f"前6项的和为:{sum_result}")
题目二:最大公约数
题目:求两个正整数12和18的最大公约数。
解答思路: 最大公约数(GCD)可以通过辗转相除法求解。辗转相除法的基本思想是:用较大数除以较小数,再用除数除以上一次的余数,如此重复,直到余数为0,此时的除数即为最大公约数。
def gcd(a, b):
while b:
a, b = b, a % b
return a
# 示例
gcd_result = gcd(12, 18)
print(f"12和18的最大公约数为:{gcd_result}")
题目三:斐波那契数列
题目:求斐波那契数列的第10项。
解答思路: 斐波那契数列的定义是:第0项和第1项都是1,从第2项开始,每一项都是前两项的和。可以使用递归或迭代的方法求解。
def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 示例
fibonacci_result = fibonacci(10)
print(f"斐波那契数列的第10项为:{fibonacci_result}")
题目四:素数判断
题目:判断一个数是否为素数。
解答思路: 素数是指只能被1和它本身整除的大于1的自然数。可以遍历从2到该数的平方根的所有整数,如果都不能整除该数,则该数为素数。
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
# 示例
prime_result = is_prime(29)
print(f"29是否为素数:{prime_result}")
题目五:汉诺塔
题目:求解汉诺塔问题,将n个盘子从A塔移动到C塔,每次只能移动一个盘子,且在移动过程中大盘子不能放在小盘子上面。
解答思路: 汉诺塔问题可以通过递归的方法解决。基本思路是:先将n-1个盘子从A塔移动到B塔,然后将最大的盘子从A塔移动到C塔,最后将n-1个盘子从B塔移动到C塔。
def hanoi(n, source, target, auxiliary):
if n == 1:
print(f"Move disk 1 from {source} to {target}")
return
hanoi(n-1, source, auxiliary, target)
print(f"Move disk {n} from {source} to {target}")
hanoi(n-1, auxiliary, target, source)
# 示例
hanoi(3, 'A', 'C', 'B')
题目六:矩阵乘法
题目:计算两个矩阵的乘积。
解答思路: 矩阵乘法是指将两个矩阵对应位置的元素相乘后相加,得到一个新的矩阵。计算公式为:C[i][j] = Σ(A[i][k] * B[k][j]),其中i, j, k分别代表矩阵C的行、列和A、B矩阵的行、列。
def matrix_multiply(A, B):
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
if cols_A != rows_B:
raise ValueError("Incompatible matrices for multiplication.")
result = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
for i in range(rows_A):
for j in range(cols_B):
for k in range(cols_A):
result[i][j] += A[i][k] * B[k][j]
return result
# 示例
A = [[1, 2], [3, 4]]
B = [[2, 0], [1, 3]]
matrix_result = matrix_multiply(A, B)
print(f"矩阵乘积为:{matrix_result}")
