首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的输出一直在重复?(Python)

我的输出一直在重复?(Python)
EN

Stack Overflow用户
提问于 2020-10-01 19:06:35
回答 2查看 1.9K关注 0票数 0

因此,我创建了一个函数,让用户输入大于2的数字。然后,代码应该打印所有素数,从2开始,以用户输入的数字结尾。

这是我的代码,它可以工作(耶!)

代码语言:javascript
复制
def enterNumber():
    
    number = int(input("Enter a number greater than 2"))
    
    lower = 2
    upper = number

    for number in range (lower, upper):
        if number > 2:
            for i in range (2, number):
                if (number % i) == 0:
                    break
            
                else:
                   if (number % i) != 0:
                       print(number)
                
enterNumber()

但这是我的输出,如果用户输入18

代码语言:javascript
复制
"Enter a number greater than 2"  
 user puts "18"

output: 3
5
5
5
7
7
7
7
7
9
11
11
11
11
11
11
11
11
11
13
13
13
13
13
13
13
13
13
13
13
15
17
17
17
17
17
17
17
17
17
17
17
17
17
17
17

为什么我的输出重复自己?如有任何建议,将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-01 19:13:23

你的问题是:

代码语言:javascript
复制
for i in range (2, number):
    if (number % i) == 0:
        break
    
    else:
        if (number % i) != 0:
            print(number)

循环中的else表示,每次找到非除数项时都要打印数字。例如,对于number = 11,您将为i值2-10打印i

在循环完成之前,您不知道这个数字是否是素数。你的打印必须在循环之后,在正常的出口上。一个经常被遗忘的语言特性是循环可以有一个else来实现这个目的。

代码语言:javascript
复制
        for i in range (2, number):
            if (number % i) == 0:
                break
            
        else:
            print(number)

输出:

代码语言:javascript
复制
Enter a number greater than 218
3
5
7
11
13
17
票数 6
EN

Stack Overflow用户

发布于 2020-10-01 19:18:32

一个简单的解决方案(有更好的方法):

代码语言:javascript
复制
def enterNumber():
    number = int(input("Enter a number greater than 2"))

    lower = 2
    upper = number

    for number in range(lower, upper):
        prime = True
        for i in range(2, number):
            if (number % i) == 0:
                prime = False
                break

        if prime:
            print(number)


enterNumber()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64161770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档