【问题标题】:Python factorization program [closed]Python因式分解程序[关闭]
【发布时间】:2013-08-06 10:47:54
【问题描述】:

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

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

【问题讨论】:

  • 您似乎没有尝试过这个 - StackOverflow 是针对特定的编程问题,而不是一般帮助。尝试实现这一点,然后如果您遇到特定问题,请回来提出问题。

标签: python if-statement for-loop factorization


【解决方案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)

【讨论】:

  • 非常感谢 Paulo 非常感谢。我仍在努力掌握 Python atm。我以前从未做过任何编程,所以我正在努力应对一系列挑战,其中一些我正在设法轻松地完成,而其他一些你可以清楚地看到正在挣扎。感谢您的帮助。
【解决方案2】:
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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 2013-07-20
    • 2015-06-07
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多