QQ扫一扫联系
数的分解
给出一个正整数 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
购物组合
小明单位发了 100 元的购物卡,小明到超市买三类洗化用品:洗发水(15 元)、香皂(2 元)、牙刷(5 元)。要把 100 元正好花掉,可有哪些购买组合?
def gouwu(money):
for i in range(0,money//15+1):
for j in range(0,money//2+1):
for k in range(0, ① ):
if ② :
print('可选择的购买组合:\t 购买洗发水 {} 瓶,香皂 {} 块,牙刷 {}个。'.format( ③ ))
gouwu(100)
回文素数
回文素数是指一个不小于 11 的自然数 n 从左向右和从右向左读,其结果值相同且是素数,即称 n 为回文素数。一种求解的方法是先判断一个自然数是否为回文数,再判断它是否为素数。如果两个判断都成立,则该自然数是回文素数。请补全代码,找出自然数 1000 以内的所有回文素数。
#判断是否为素数
def ① (n):
for i in range(2,n):
if ② :
break
else:
return True
#判断是否为回文数
def HuiWenShu(n):
n=str(n)
if n== ③ :
return True
else:
return False
for i in range(11,1001):
if ZhiShu(i)==True ④ :
print('{}是回文素数!'.format(i))