我如何在Python中打印出完美的数字及其旁边显示的除数?

发布于 2025-01-14 09:28:05 字数 577 浏览 2 评论 0原文

#I have the formula in which the code produces all perfect numbers between 1 and 10,000 and I want the divisors printed out alongside the perfect numbers 
n = 1

while n <= 10001:

    sum = 0
    divisor = 1
    while divisor < n:
        if not n % divisor:
            sum += divisor
        divisor = divisor + 1
    if sum == n:
        print(n, "is a perfect number")
    n = n + 1
#for example, I want the output to look like:

6 - 真因数:1, 2, 3

28 - 真因数:1, 2, 3, 4, 5, 6, 7

#I have the formula in which the code produces all perfect numbers between 1 and 10,000 and I want the divisors printed out alongside the perfect numbers 
n = 1

while n <= 10001:

    sum = 0
    divisor = 1
    while divisor < n:
        if not n % divisor:
            sum += divisor
        divisor = divisor + 1
    if sum == n:
        print(n, "is a perfect number")
    n = n + 1
#for example, I want the output to look like:

6 - proper divisors: 1, 2, 3

28 - proper divisors: 1, 2, 3, 4, 5, 6, 7

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放赐 2025-01-21 09:28:05

不要跟踪总和,跟踪除数并在最后检查总和:

for n in range(1, 10001):
    divisors = []
    for divisor in range(1, n//2+1):
        if not n % divisor:
            divisors.append( divisor )
    if sum(divisors) == n:
        divisors.append( n )
        print(n, "is a perfect number", divisors)

输出:

6 is a perfect number [1, 2, 3, 6]
28 is a perfect number [1, 2, 4, 7, 14, 28]
496 is a perfect number [1, 2, 4, 8, 16, 31, 62, 124, 248, 496]
8128 is a perfect number [1, 2, 4, 8, 16, 32, 64, 127, 254, 508, 1016, 2032, 4064, 8128]

强制列表理解解决方案:

for n in range(1, 10001):
    divisors = [divisor for divisor in range(1, n//2+1) if not n % divisor]
    if sum(divisors) == n:
        divisors.append( n )
        print(n, "is a perfect number", divisors)

Don't track the sum, track the divisors and check the sum at the end:

for n in range(1, 10001):
    divisors = []
    for divisor in range(1, n//2+1):
        if not n % divisor:
            divisors.append( divisor )
    if sum(divisors) == n:
        divisors.append( n )
        print(n, "is a perfect number", divisors)

Output:

6 is a perfect number [1, 2, 3, 6]
28 is a perfect number [1, 2, 4, 7, 14, 28]
496 is a perfect number [1, 2, 4, 8, 16, 31, 62, 124, 248, 496]
8128 is a perfect number [1, 2, 4, 8, 16, 32, 64, 127, 254, 508, 1016, 2032, 4064, 8128]

Obligatory list comprehension solution:

for n in range(1, 10001):
    divisors = [divisor for divisor in range(1, n//2+1) if not n % divisor]
    if sum(divisors) == n:
        divisors.append( n )
        print(n, "is a perfect number", divisors)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文