题目:
解题思路:
这道题我用的方法是先找出所给数据的所有因数,再将所的因数进行三重循环并判断,最后给出结果。
求因数:
n = int(input())
b = set()#用来存储因数,且集合类型自动去重
for i in range(1,int(n**0.5)+1):
if n%i == 0:
b.add(i)
b.add(n//i)
这里6/2=3,2和3都是6的因数,为了节省计算时间,我们就从1到所给数据的算术平方根进行循环。且除数和商都是因数。
将因数进行排列:
ans = 0
for i in b:
for j in b:
for k in b:
if i*j*k == n:
ans += 1
print(ans)
三重循环,考虑所有排列情况,因为因数没有重复的,所以这里排列的结果也不会有重复。
全部代码:
n = int(input())
b = set()#用来存储因数
for i in range(1,int(n**0.5)+1):
if n%i == 0:
b.add(i)
b.add(n//i)
ans = 0
for i in b:
for j in b:
for k in b:
if i*j*k == n:
ans += 1
print(ans)
如果对你有所帮助,请留下个赞吧~