我正在尝试编写代码来找出给定数字是否是 n 的适当因子,同时我还试图找出给定数字的重数。
这是我的代码:
def f(n, d):
'''
>>> f(2, 1)
1 is not a proper factor of 2.
>>> f(2, 2)
2 is not a proper factor of 2.
>>> f(16, 2)
2 is a proper factor of 16 of mutiplicity 4.
>>> f(100, 20)
20 is a proper factor of 100 of mutiplicity 1.
>>> f(8 ** 7 * 3 ** 5 * 11 ** 2, 8)
8 is a proper factor of 61662560256 of mutiplicity 7.
>>> f(3 ** 3 * 11 * 13 ** 2 * 40 ** 6, 8)
8 is a proper factor of 205590528000000 of mutiplicity 6.
'''
multiplicity = 0
# Insert your code here
if d == 1:
print(f'{d} is not a proper factor of {n}.')
if d == n:
print(f'{d} is not a proper factor of {n}.')
if n % d == 0:
copy = n
while(copy != 1):
copy = copy // d
multiplicity += 1
if not multiplicity:
print(f'{d} is not a proper factor of {n}.')
else:
print(f'{d} is a proper factor of {n} of mutiplicity {multiplicity}.')
if __name__ == '__main__':
import doctest
doctest.testmod()
任何建议都会有很大帮助。
最佳答案
如果我没有正确理解你想做什么,我相信这个循环有错误的条件
while(copy != 1):
copy = copy // d
multiplicity += 1
只要副本是 d 的倍数,你想要的是将副本除以 d,即
while(copy % d == 0):
copy = copy / d
multiplicity += 1
关于python-3.x - 如何高效地找到适当因子的多重性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53581533/