2021年3月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程
四级
2021
2022-10-29 17:24:27
101次
一、编程题
设计一个算法,将一个正整数分解质因数。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,输出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
根据上述算法思想,补全下列代码。
输入输出示例:当n=105,输出:105= 3*5*7
当n=60,输出:60= 2*2*3*5
def fun(n):
print('%d='%n,end=' ')
for i in ① :
while n!=i:
if n>i and ② :
print(i,end='*')
③
else:
break
else:
④
break
if __name__ == "__main__":
while True:
num=input("输入一个正整数:")
if not num.isdigit():
break
fun(int(num))
【知识点】 电子学会Python四级
利用分治思想,给定一个顺序表,编写一个求出其最大值的程序。
根据上述算法思想,补全下列代码。
输入输出示例:当顺序表是 [22,13,34,4,68,15,5,58,36],输出:68
def fun_max(num=list):
return max(num)
def fun(num):
n = ①
if n <= 2:
return ②
l_list, r_list = num[:n//2], num[n//2:]
l_max, r_max = ③
return fun_max( ④ )
if __name__ == "__main__":
alist = [22,13,34,4,68,15,5,58,36]
print(fun(alist))
【知识点】 电子学会Python四级
现有n个人依次围成一圈玩游戏,从第1个人开始报数,数到第m个人出局,然后从出局的下一个人开始报数,数到第m个人又出局,...,如此反复到只剩下最后一个是胜利者。设n个人的编号分别为1,2,...,n,打印出局的顺序。
根据上述算法思想,补全下列代码。
输入输出示例:当n=10,m=4,输出如下:
出局的人是: 4
出局的人是: 8
出局的人是: 2
出局的人是: 7
出局的人是: 3
出局的人是: 10
出局的人是: 9
出局的人是: 1
出局的人是: 6
最后胜利者是: 5
def fun(n,k):
L = list( ① )
if n == 1:
return
else:
x = 0
for i in ②
x = ③ - 1
print('出局的人是:',L[x])
del L[x]
if x < 0:
x = 0
print('最后胜利者是:', ④ )
fun(10,4)
【知识点】 电子学会Python四级
