打印素数直到用户输入

Pudie12

我正在制作一个快速程序,该程序将要求用户输入一个数字,然后输出直至该数字的所有质数:

n=int(input("Enter a number: "))
a=2
if n<=1:
    n=int(input("Enter another number: "))
while a<n:
    for i in range(2,n):
        if a%i==0:
            break
        else:
            print (a)
            break
    a=a+1

我遇到的问题是它不会打印出来2例如,如果我将其20用作我的n值,它将显示:

Enter a number: 20
3
5
7
9
11
13
15
17
19
琼斯·哈珀

您有两个错误:

  1. else缩进不正确,因此它位于而if不是forprint如果下面的所有a都不是的因数a,而不是第一个不是的因数,您要这样做);

  2. 您的内在语言range上升到n,而不是a(因此总是包括aa % a == 0)。

这将起作用:

for a in range(2, n):
    for i in range(2, a):
        if a % i == 0:
            break
    else:
        print(a)

请注意,我已经使用一个for循环替换了external while,当您已经知道在哪里停止时,通常会更好。您可以通过检查的平方根来提高代码效率a,并2忽略以外的偶数,但我会将这些优化留给您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

打印斐波那契直到用户输入的号码

这段代码有什么问题?尝试打印所有素数直到给定输入

用户输入的Java素数检查

要求用户输入-素数代码

打印素数从a到b和a到b是用户使用javascript输入的值

循环直到用户输入“x”

程序读取用户输入的字符串,直到没有输入,然后以相反的顺序打印字符串

输入是程序应打印的元素数

如何使用Sieve打印素数直到10 ^ 8?

根据用户输入查找素数的位置

从用户输入的java中列出素数

如何在F#中打印出整个斐波那契数列直到用户输入的值?

向用户读取正数,直到他们输入负数。打印出已读取的最大正数。爪哇

使用循环从键盘获取输入,直到用户按下 0 并在屏幕上打印它们的平均值

提示用户输入字符串,直到字符串以“A”开头,然后打印最长的字符串

提示用户输入字符串直到字符串以“A”开头然后打印最长字符串的程序

将用户输入读入数组,直到用户输入特定条目

循环代码,直到用户输入成功

验证用户输入并循环直到正确

AngularJS搜索延迟,直到用户输入字段

继续提示用户输入,直到键入0

Java错误的用户输入循环,直到正确

遍历文件行直到找到用户输入

对用户输入进行排序并打印

Django LoginView 打印用户输入

打印用户输入的 Java 数组

如何打印用户输入的总数?

从循环打印多个用户输入

如何循环用户输入直到输入整数?