题目一:生成斐波那契数列的前 n 项
- 斐波那契数列的起始两项为 1,从第三项开始,每一项都等于前两项之和。
#斐波那契数列 生成斐波那契数列的前 n 项
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 2) + fibonacci(n - 1)
def main():
user\_input = input("请输入生成斐波那契数列第n项的值: ")
try:
print(fibonacci(int(user\_input, base=10)))
except ValueError:
print("输入无效,请输入一个有效的整数。")
main()
if \_\_name\_\_ == "\_\_main\_\_":
main()
AI写代码bash12345678910111213141516171819

题目二:冒泡排序
- 冒泡排序(Bubble Sort)是一种简单的排序算法。它通过重复地遍历待排序的元素,比较相邻的元素并交换它们的位置,直到整个序列有序。
def bubble\_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr\[j\] > arr\[j + 1\]:
arr\[j\], arr\[j + 1\] = arr\[j + 1\], arr\[j\]
return arr
def main():
arr = \[64, 34, 25, 12, 22, 11, 90\]
print(bubble\_sort(arr))
if \_\_name\_\_ == "\_\_main\_\_":
main()
AI写代码bash1234567891011121314

题目三:二分查找
- 二分查找(Binary Search)是一种高效的查找算法,适用于已经排序的数组或列表。它的基本思想是通过不断将查找范围分为两半,缩小查找的范围,从而快速找到目标元素。
def binary\_search(arr, target):
low = 0
high = 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
def main():
arr = \[1, 3, 5, 7, 9, 11, 13, 15, 17, 19\]
target = 7
result = binary\_search(arr, target)
if result != -1:
print(f"目标元素 {target} 在索引 {result} 处")
else:
print(f"目标元素 {target} 不在数组中")
if \_\_name\_\_ == "\_\_main\_\_":
main()
AI写代码bash1234567891011121314151617181920212223242526

题目四:最大子数组和 (kadane算法)
- 给定一个整数数组,找出一个具有最大和的连续子数组,并返回其和。这个子数组至少包含一个元素。
def kadane(nums):
# 如果数组为空,返回0
if not nums:
return 0
# 初始化当前子数组和和最大子数组和
current\_sum = max\_sum = nums\[0\]
for i in range(1, len(nums)):
# 更新当前子数组和
#print("init current\_sum = :", current\_sum)
current\_sum = max(nums\[i\], current\_sum + nums\[i\])
#print("current\_sum = :", current\_sum)
# 更新最大子数组和
max\_sum = max(max\_sum, current\_sum)
# print("max\_sum = :", max\_sum)
return max\_sum
def main():
nums = \[-3, 1, -3, 4, -1, 2, 1, -5, 4\]
result = kadane(nums)
print("最大子数组和:", result)
if \_\_name\_\_ == "\_\_main\_\_":
main()
AI写代码bash12345678910111213141516171819202122232425

题目五:水仙花数
- 水仙花数是指一个 n 位数,其各位数字的 n 次方之和等于该数本身。
\# 判断是否为水仙花数
def is\_armstrong\_number(number):
# 提取百位、十位和个位的数字
hundreds = number // 100
tens = (number // 10) % 10
ones = number % 10
# 判断水仙花数条件:各位数字的立方和等于原数
if (hundreds \*\* 3 + tens \*\* 3 + ones \*\* 3) == number:
return True
else:
return False
def main():
# 获取用户输入
num = int(input("请输入一个三位数: "))
# 判断输入是否是有效的三位数
if 100 <= num <= 999:
if is\_armstrong\_number(num):
print(f"{num} 是一个水仙花数")
else:
print(f"{num} 不是水仙花数")
else:
print("请输入一个有效的三位数")
if \_\_name\_\_ == "\_\_main\_\_":
main()
AI写代码bash1234567891011121314151617181920212223242526272829

题目六:判断一个数是否为质数
- 质数(英文名:Prime number)又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
import math
def is\_prime(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(math.sqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
def main():
# 输入一个数字并判断是否为质数
num = int(input("请输入一个数:"))
if is\_prime(num):
print(f"{num} 是质数")
else:
print(f"{num} 不是质数")
if \_\_name\_\_ == "\_\_main\_\_":
main()
AI写代码bash123456789101112131415161718192021222324
