测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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分)


上一题 下一题