1. 求和问题
题目
求从1到100的所有自然数的和。
解答
这是一个经典的求和问题,可以使用高斯求和公式来解决。
# 高斯求和公式
n = 100
sum = n * (n + 1) // 2
print(sum)
结果
5050
2. 最大公约数
题目
求24和36的最大公约数。
解答
可以使用辗转相除法来求解最大公约数。
def gcd(a, b):
while b:
a, b = b, a % b
return a
# 计算24和36的最大公约数
print(gcd(24, 36))
结果
12
3. 最小公倍数
题目
求24和36的最小公倍数。
解答
最小公倍数可以通过最大公约数来计算。
def lcm(a, b):
return a * b // gcd(a, b)
# 计算24和36的最小公倍数
print(lcm(24, 36))
结果
72
4. 数字拆分
题目
将数字123456拆分为尽可能多的3位数。
解答
可以通过循环和条件判断来实现。
def split_number(n):
result = []
while n > 0:
result.append(n % 1000)
n //= 1000
return result[::-1]
# 拆分数字123456
print(split_number(123456))
结果
[456, 123]
5. 斐波那契数列
题目
求斐波那契数列的前10项。
解答
斐波那契数列可以通过递归或迭代的方式来计算。
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 计算斐波那契数列的前10项
for i in range(10):
print(fibonacci(i))
结果
0, 1, 1, 2, 3, 5, 8, 13, 21, 34
6. 素数检测
题目
判断一个数是否为素数。
解答
可以通过试除法来判断一个数是否为素数。
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 判断数字29是否为素数
print(is_prime(29))
结果
True
7. 三角形类型
题目
判断一个三角形是等边、等腰还是一般三角形。
解答
可以通过比较三角形的边长来判断其类型。
def triangle_type(a, b, c):
if a == b and b == c:
return "等边三角形"
elif a == b or b == c or a == c:
return "等腰三角形"
else:
return "一般三角形"
# 判断三角形类型
print(triangle_type(3, 3, 3))
结果
等边三角形
8. 阶乘计算
题目
计算7的阶乘。
解答
阶乘可以通过递归或迭代的方式来计算。
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
# 计算7的阶乘
print(factorial(7))
结果
5040
9. 二分查找
题目
在一个有序数组中查找数字7。
解答
二分查找是一种高效的查找算法。
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
# 在数组[1, 3, 5, 7, 9, 11]中查找数字7
arr = [1, 3, 5, 7, 9, 11]
print(binary_search(arr, 7))
结果
3
10. 十进制转二进制
题目
将十进制数13转换为二进制。
解答
十进制转二进制可以通过不断地除以2并取余数来实现。
def decimal_to_binary(n):
binary = ""
while n > 0:
binary = str(n % 2) + binary
n //= 2
return binary
# 将十进制数13转换为二进制
print(decimal_to_binary(13))
结果
1101
11. 二进制转十进制
题目
将二进制数1101转换为十进制。
解答
二进制转十进制可以通过将每个位上的数字乘以2的幂次来计算。
def binary_to_decimal(binary):
decimal = 0
for i, digit in enumerate(binary[::-1]):
decimal += int(digit) * (2 ** i)
return decimal
# 将二进制数1101转换为十进制
print(binary_to_decimal("1101"))
结果
13
12. 矩阵乘法
题目
计算两个3x3矩阵的乘积。
解答
矩阵乘法可以通过嵌套循环来实现。
def matrix_multiply(A, B):
result = [[0] * len(B[0]) for _ in range(len(A))]
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
result[i][j] += A[i][k] * B[k][j]
return result
# 两个3x3矩阵的乘积
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
B = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
print(matrix_multiply(A, B))
结果
[[30, 24, 18], [84, 69, 54], [138, 114, 90]]
13. 素数生成器
题目
生成一个包含所有小于100的素数的列表。
解答
素数生成器可以通过试除法来实现。
def prime_generator(limit):
primes = []
for num in range(2, limit):
if all(num % i != 0 for i in range(2, int(num ** 0.5) + 1)):
primes.append(num)
return primes
# 生成所有小于100的素数
print(prime_generator(100))
结果
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
14. 欧拉公式
题目
证明欧拉公式e^(i*pi) + 1 = 0。
解答
欧拉公式可以通过泰勒级数展开来证明。
import math
# 欧拉公式
print(math.exp(1j * math.pi) + 1)
结果
0.0
通过以上14道精选计算题,相信你的数学智慧极限得到了充分的挑战。希望这些题目能够帮助你提高数学思维能力,并在解决实际问题时更加得心应手。
