A32645. 数的分解给出一个正整数 a,要求分解成若干个正整数的乘积,即 a=a1×a2×a3×... ×an,并且 1<a1≤a2≤a3≤...≤an,问这样分解的种类有多少。注意到 a=a 也是一种分解。例如,8 可以分解成 8=2*2*2,8=2*4,8=8 总共 3 种。代码如下,完善划线处的代码:def fun(x, y=2): if x == 1: global ans ① for i in r…
填空题
较难
知识点
题目描述
数的分解
给出一个正整数 a,要求分解成若干个正整数的乘积,即 a=a1×a2×a3×... ×an,并且 1<a1≤a2≤a3≤...≤an,问这样分解的种类有多少。注意到 a=a 也是一种分解。
例如,8 可以分解成 8=2*2*2,8=2*4,8=8 总共 3 种。
代码如下,完善划线处的代码:
def fun(x, y=2):
if x == 1:
global ans
①
for i in range(y, x+1):
if ② :
fun(x//i,i)
lst = [2, 8, 9, 20] #测试数据
for i in lst:
ans = 0
③
print(ans)
程序运行结果如下:
1
3
2
4
参考答案
def fun(x, y=2):
if x == 1:
global ans
ans += 1
for i in range(y, x+1):
if x%i== 0:
fun(x//i,i)
lst = [2, 8, 9, 20] #测试数据
for i in lst:
ans = 0
fun(i)
print(ans)答案解析
评分标准:
(1)ans+=1或等效答案;(2分)
(2)x%i=0或等效答案:(3分)
(3)fun(i)或等效答案。(3分)
上一题
下一题