5.23
【题目描述】
输出n(0<n)行杨辉三角形,n由用户输入。
【源代码程序】
def generate_pascal_triangle(n):
triangle = []
for i in range(n):
# 初始化当前行
row = [1]
if i > 0:
# 前一行的数值
prev_row = triangle[i - 1]
# 计算当前行的数值
for j in range(1, i):
row.append(prev_row[j - 1] + prev_row[j])
row.append(1)
# 添加当前行到三角形中
triangle.append(row)
return triangle
def print_pascal_triangle(triangle):
# 打印杨辉三角形
for row in triangle:
for num in row:
# 每个数占5位,右对齐
print(f"{num:5}", end='')
print()
# 输入行数n
n = int(input("请输入行数n(大于0):"))
# 生成杨辉三角形
triangle = generate_pascal_triangle(n)
# 打印杨辉三角形
print_pascal_triangle(triangle)
【运行测试】
筛法求素数
【题目描述】
用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。
【源代码程序】
def sieve_of_eratosthenes(n, m):
# 初始化标记数组,True表示该位置的数是素数
primes = [True] * (m + 1)
primes[0] = primes[1] = False # 0和1不是素数
# 使用筛法找出素数
for i in range(2, int(m ** 0.5) + 1):
if primes[i]:
# 将i的倍数标记为非素数
for j in range(i * i, m + 1, i):
primes[j] = False
# 输出[n,m]范围内的素数
count = 0 # 计数器,用于控制输出格式
for i in range(n, m + 1):
if primes[i]:
print(f"{i:5}", end='') # 每个素数占5位,右对齐
count += 1
if count % 5 == 0: # 每行5个数字
print()
if count % 5 != 0: # 输出最后一行不足5个数字的情况
print()
# 输入整数n和m
n, m = map(int, input().split())
# 求解[n,m]范围内的所有素数并输出结果
sieve_of_eratosthenes(n, m)
【运行测试】