当前位置: 首页 > 知识库问答 >
问题:

如何结合Eratosthenes算法的筛选来寻找素数?

羿经武
2023-03-14

为了澄清,这与Eratosthenes的问题Sieve-Finding Primes Python不同,因为我不想在两个数字之间生成素数,但我想检查一个数字是否是素数。

我做了下面的代码来确定一个数字是否是素数。然后我听说了埃拉托色尼算法的筛子,它显然更快,但我不知道如何在下面的代码中编写它?

number1 = int(raw_input("""
Enter any number :- """))
if number1 == 1:
    print "1 is a special case. It is neither a Prime Number nor a Normal Number. Be like 1"
if number1 == 2:
    print number1, "is a Prime Number"
if number1 == 4:
    print "4 is not a Prime Number"
    print "2 times 2 is 4"
if number1 > 1:
    for i in range(2,(number1//2)):
        if number1 % i == 0:
            print number1, "is not a Prime Number"
            print i, "times", (number1/i), "is", number1
            break
    else:
        print number1, "is a Prime Number"
else:
    print "Please type a positive number only"    

你们能帮帮我吗?

共有2个答案

佟和平
2023-03-14

埃拉托斯特尼筛是一种生成素数的方法。因此,它将取代您的代码:

for i in range(2,(number1//2)):
    if number1 % i == 0:
        # handle non-prime

具有

if number1 in previous_generated_primes:
    # handle non-prime
云开诚
2023-03-14

我是在回复时做的。我做了它,所以每次我找到一个素数,我就把它存储在一个列表中。

当计算一个数字是否为素数时,我会遍历列表中的所有数字,而不是遍历它之前的所有数字。

这模仿了埃拉塔斯特尼的筛子会让你做什么。

 类似资料:
  • 问题内容: 我已经可以存储所有32位质数,并且 我想用它们来生成一些64位质数 。即使对逻辑和编译进行了优化,使用试验划分也太慢了。 我正在尝试修改Eratosthenes的筛网以使用预定义列表,如下所示: 在数组A中从2到4294967291 在数组B中从2 ^ 32到X inc减1 找到C,它是当前素数的第一个倍数。 从C标记开始并以当前素数跳至X。 转到1。 问题是使用模数查找素数的第3步,

  • #Python中的这段非常简短的代码试图模拟前N个自然数的“Eratosthennes筛”,并限制(0)脚本长度;(1) 最小化“if语句”和“for/while循环”;(2) CPU时间方面的效率。 在Intel Core I5上,它返回第一个数字中的质数: < Li > 0.03秒内N = 100,000; < Li > 0.63秒内N = 1,000,000; < li>N = 10,000

  • 问题内容: 注意: 下面的版本2使用Eratosthenes筛。有几个答案可以帮助我解决最初提出的问题。我选择了Eratosthenes的Sieve方法,实现了该方法,并适当地更改了问题标题和标签。感谢所有提供帮助的人! 介绍 我写了这个花哨的小方法,它生成一个整数数组,该数组包含小于指定上限的质数。它工作得很好,但我有一个担心。 方法 我的顾虑 我担心的是,我创建的数组对于该方法将返回的最终元素

  • 我正在尝试用Java开发游戏《奥赛罗》,我正在努力寻找玩家可用的动作(而不是电脑)。 比如我是玩家1,我在玩白色的棋子, 检查按钮是否是空的。(我使用按钮作为瓷砖) 检查是否有相反颜色的邻居。 如果有,继续检查每个方向有相反的颜色,直到 如果我们到达边界-返回false. 如果我们达到我们的颜色-把所有的碎片变成我的颜色。 我在努力实现3。五,。 我如何迭代通过所有的方向(最大的8个方向,如果我在

  • 嗨,我有问题,我需要做的任务。我在SQL中有一个表,其中显示了用户日志(子用户)以及添加时间戳、执行的操作和订户名称的触发器,如下所示: 表:audit_subscibers 现在我需要创建一个视图,仅显示已删除删除时间和插入时间的订阅者(名称),以实现这样的事情: 添加了约翰(像其他成员一样),但也删除了beed,而不是触摸只有插入的成员 如何做到这一点,只需要潜意识 我还有另一个类似的任务,但

  • 我想从以下html行中选择文本: 我尝试使用xpath。但由于某些原因,selenium无法通过xpath找到此元素。我想通过“data reactid”属性选择文本。我不知道该怎么做。我在python中使用selenium。