所以我的程序应该找到一个整数的素因子,然后打印出整数数组的内容,并且数组中的值应该相乘(给你原始数字) 这就是它应该是什么样子
Prime Factorization Program
Enter an integer > 1: 210
Prime Factors
2
3
5
7
Check Product = 210
这是我的代码和我的结果
def main():
a = [0]*20
print("Prime Factorization Program")
print()
num = eval(input("Enter an integer > 1: "))
count = 0
for k in range(1,num):
if num % k == 0:
a[count]= k
count = count + 1
mySum = 0
for k in range(count):
mySum = mySum + a[k]
print()
print("Prime Factors")
for k in range(count):
print(a[k])
print("Check Product =",mySum)
main()
这是我的结果
Prime Factorization Program
Enter an integer > 1: 210
Prime Factors
1
2
3
5
6
7
10
14
15
21
30
35
42
70
105
Check Product = 366
答案 0 :(得分:1)
问题 - 如果 f 是一个因素,您不希望计算 f 的倍数。
解决方案 - 确定因素 f 后,将 n 除以 f 。
示例 - 210可被2整除;除以2然后处理105.这确保您不再计算2的倍数,如6或10. 105可被3整除;除以3并继续35。
问题 - 素数因子可以多次显示。 12 = 2×2×3
解决方案 - 如果 f 是一个因素,请继续检查它并除以 f ,直到您考虑到所有事件为止。
示例 - 12可被2整除;除以2得到6. 6仍可被2整除;再次除以2得到3. 3不能被2整除;继续下一个因素。
答案 1 :(得分:0)
因为您的代码正在打印所有因素而不仅仅是素因子。下面是您可以参考素数分解的样本函数:
def prime_factors(n):
prim_facs = []
d = 2
while d*d <= n:
while (n % d) == 0:
prim_facs.append(d)
n //= d
d += 1
if n > 1:
prim_facs.append(n)
return prim_facs
# Sample Example
# >>> prime_factors(210)
# [2, 3, 5, 7]