素因子分解不适用于具有重复因子的数字
Prime factor decomposition not working for numbers with repeated factors
在这段代码中,用户必须输入一个区间,程序必须计算这个区间内每个数字的质因数分解。
但是,我无法为具有重复因子的数字(例如 4、8 和 9)打印正确的素因子分解。
我尝试使用 while 循环,但我无法正确使用它,而且我的代码一直不停地运行。
题目要求:求给定区间[a,b]内所有整数的质因数分解。
范围 (3,10) 的预期输出:
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
我的代码:
a, b = map(int, input().split())
j = [] #list for prime numbers
lst = [] #list for factors for numbers in range(a,b)
# prime numbers
for number in range(2, b+1):
for i in range(2, number):
if number % i == 0:
break
else:
j.append(number)
#factors
for c in range(a, b+1):
lst = []
for i in j:
k = c % i
if k == 0:
lst.append(i)
print(f'{c}=', end='')
print(*lst, sep='*')
我的范围 (3,10) 的代码输出:
3=3
4=2
5=5
6=2*3
7=7
8=2
9=3
10=2*5
我很感激能得到任何反馈,谢谢!
关闭。而不是只检查 c % i
一次,你必须循环直到它不再是 0.
#factors
for c in range(a, b+1):
print(f'{c}=', end='')
lst = []
for i in j:
while i <= c and c % i == 0:
c //= i
lst.append(i)
print(*lst, sep='*')
请注意,我必须将 c
的 print
移动到循环的顶部,因为我正在循环内修改 c
。直到我做了一个测试才注意到这一点 运行.
在这段代码中,用户必须输入一个区间,程序必须计算这个区间内每个数字的质因数分解。
但是,我无法为具有重复因子的数字(例如 4、8 和 9)打印正确的素因子分解。
我尝试使用 while 循环,但我无法正确使用它,而且我的代码一直不停地运行。
题目要求:求给定区间[a,b]内所有整数的质因数分解。
范围 (3,10) 的预期输出:
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
我的代码:
a, b = map(int, input().split())
j = [] #list for prime numbers
lst = [] #list for factors for numbers in range(a,b)
# prime numbers
for number in range(2, b+1):
for i in range(2, number):
if number % i == 0:
break
else:
j.append(number)
#factors
for c in range(a, b+1):
lst = []
for i in j:
k = c % i
if k == 0:
lst.append(i)
print(f'{c}=', end='')
print(*lst, sep='*')
我的范围 (3,10) 的代码输出:
3=3
4=2
5=5
6=2*3
7=7
8=2
9=3
10=2*5
我很感激能得到任何反馈,谢谢!
关闭。而不是只检查 c % i
一次,你必须循环直到它不再是 0.
#factors
for c in range(a, b+1):
print(f'{c}=', end='')
lst = []
for i in j:
while i <= c and c % i == 0:
c //= i
lst.append(i)
print(*lst, sep='*')
请注意,我必须将 c
的 print
移动到循环的顶部,因为我正在循环内修改 c
。直到我做了一个测试才注意到这一点 运行.