我是编程的新手,我正在尝试编写一个从输入中获取正整数n的程序,然后输出n的所有因子分解。
例如,如果n = 10,程序将输出
1乘10等于10
2乘5等于10
5次2等于10
10次1等于10
次
我认为最简单的方法是使用嵌套在for循环中的if语句。任何人都可以向我提供任何指导来帮助创建这个吗?到目前为止,我有......
n = int(input())
a = 0
b = n
for a in range(0, n):
if a * b !=n:
continue
if a * b ==n:
print (a+ "times" +b+ "equals" +n)
a=a+1
b=n-1
但由于某种原因,它无法正常工作。我认为我有正确的总体想法,但我的代码显然不正确。
答案 0 :(得分:1)
您的代码存在一些问题,但也存在逻辑问题。您正在增加a
两次(for
添加),b
第一次通过循环变为n-1
并保持这种状态,但即使它没有' t(例如b = b - 1
),它不起作用,因为如果你同时增加a
并减少b
,你将无法找到正确的值,除非它们发生偶然匹配。
除此之外,检查a * b != n
是不必要的,您需要在整数上调用str
将其添加到字符串中,并在range
调用中添加0是多余的。
whncode的答案是一个优雅的解决方案(除了我试图纠正的一些错误),但是要使用你的逻辑,你可能会这样做:
for a in range(1, n+1):
for b in range(1, n+1):
if a * b == n:
print str(a) + " times " + str(b) + " equals " + str(n)
答案 1 :(得分:0)
n = 10
for divisor in range(n, 0, -1): # reverse range
if (n%divisor == 0): # if modulo is 0
print("%d times %d equals %d", (n/divisor, divisor, n)