0

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

但由于某种原因,它不起作用。我认为我的总体思路是正确的,但我的代码显然不正确。

4

2 回答 2

1

您的代码存在一些问题,但您的逻辑也存在一些问题。你增加a了两次(for加法和加法),b成为n-1第一次通过循环并保持这种状态,但即使它没有(例如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)
于 2013-08-06T11:45:17.987 回答
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)
于 2013-08-06T11:02:58.420 回答