Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 素筛算法_Python 2.7_Prime Factoring - Fatal编程技术网

Python 2.7 素筛算法

Python 2.7 素筛算法,python-2.7,prime-factoring,Python 2.7,Prime Factoring,对于量程(2,int(量程**0.5))内的量程: 我一直收到以下错误:输入号码:回溯(最近一次呼叫最后一次): 文件“”,第12行,在 NameError:未定义名称“quuNUmm” 我做错了什么 您输入了错误的大写字母“U”。在调用format()时,它应该是quuNumm,而不是quuNumm 编辑:您应该遵循的逻辑(此处为伪代码)是: [输入]获取用户输入n,直到n有效 [初始化]声明复合标志并将其设置为false [循环]对于范围2..sqrt(n)(包括)内的每个编号x: 如果x平

对于量程(2,int(量程**0.5))内的量程:

我一直收到以下错误:输入号码:回溯(最近一次呼叫最后一次): 文件“”,第12行,在 NameError:未定义名称“quuNUmm”


我做错了什么

您输入了错误的大写字母“U”。在调用
format()
时,它应该是
quuNumm
,而不是
quuNumm

编辑:您应该遵循的逻辑(此处为伪代码)是:

  • [输入]获取用户输入
    n
    ,直到
    n
    有效
  • [初始化]声明复合标志并将其设置为
    false
  • [循环]对于范围
    2..sqrt(n)
    (包括)内的每个编号
    x
    : 如果
    x
    平均除以
    n
    ,则将复合标志设置为
    true
    ,并中断循环
  • [输出]如果复合标志为
    true
    ,则报告
    n
    不是素数;否则报告它是prime

  • 谢谢你,特德·霍普。有可能解释素数筛背后的数学逻辑吗?@iivri andre-Sure,但请注意你发布的代码不是筛算法。有关质数筛的信息,请查看。你的代码是一个蛮力测试。数学逻辑是,如果一个数字不是素数,它可以被一个不大于该数字平方根的整数整除。(不管平方根是否是整数,关键是如果它可以被一个大于平方根的数字整除,商将是另一个小于平方根的除数。)好的。当我用16运行算法时,它返回“16同时是素数,16同时不是素数?”我如何解决这个问题?@Ted Hopp我在'if(quounumm%quoup==0):print({}不是素数)。format(quounumm))`它能工作,但我不知道为什么。@iivri andre-只有当它不能被所有不大于平方根的数整除时,这个数才是素数。如果“非素数”不能被任何数字整除,则打印它。例如,16不能被3整除,但这并不意味着它是素数。最好的方法是在检测到数字不是素数时设置一个标志,然后退出循环。循环退出后,仅当未设置标志时(即,如果该数字不能被任何测试数字整除),才打印该数字为素数。
    quuNumm = int(input("ENTER NUMBER : "))
    
    if (quuNumm % quuP == 0) : 
    
        print("{} is NOT PRIME " . format(quuNumm)) 
    
    
    elif (quuNumm % quuP != 0) : 
    
        print("{} is prime ".format(quuNUmm)) 
    
        break 
    
    else : 
    
        print("ENTER NONNEGATIVE NUMBER PLEASE")