Python分解程序

时间:2013-08-06 10:47:54

标签: python if-statement for-loop factorization

我是编程的新手,我正在尝试编写一个从输入中获取正整数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

但由于某种原因,它无法正常工作。我认为我有正确的总体想法,但我的代码显然不正确。

2 个答案:

答案 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)