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

如何编写一个使用厄拉多塞筛列出质数的函数

邹齐智
2023-03-14

我应该编写一个函数或脚本,找出所有小于给定整数n的质数p

n = input('Enter your number');
v=[1:n];
v(1)=0
for i=2:n
    s=0;
    for j=v(2)
        if i>v(2) &&  mod(i,j)==0
           s=s+1;
        end
    end
    if s>0
      v(i)=0;
    end
end
for i=v(v>v(find(v,1,'first'))):n
s=0;
    for j=v(v>v(find(v,1,'first')))
        if i>v(v>v(find(v,1,'first'))) & mod(i,j)==0
           s=s+1
        end
    end
    if s>0
      v(i)=0;
    end 
end     

v

我意识到这与我应该写的代码相去甚远。但这是我想到的唯一想法,它只删除了可被2和3整除的数字,我需要找到所有素数,对每个entry.This重复这一点显然不明智。但我觉得可以为此创建一个循环。但我没有编写这个循环。请帮助我。

共有2个答案

国跃
2023-03-14

将Goran Belfinger的答案中的代码翻译到Matlab中(恐怕我无法理解您操作中的代码):

N = input('Enter your number: ');

primes = 2:N;
p=2;

while (p <= N)
    for i = 2*p:p:N
        primes(i - 1) = 0;
    end;
    p = p + 1;
end

primes = primes(primes > 0)
穆远
2023-03-14

这是伪代码(对不起,我不知道matlab)。我查看了维基百科上的算法,并用Java进行了测试。

fill your array with numbers from 2 to N

p=2
while p<=n
    for i=2*p, while i<=N, increment i=i+p
        mark element as 0
    end for
    increment p by 1
end while

print all array elements that are not 0
 类似资料:
  • 我必须为'sieve of eratosthenes'算法编写一个java代码,以便在控制台上打印出给定最大值的素数,但我不被允许使用数组。我们的教授告诉我们,只有在循环的帮助下才能做到这一点。 所以我想了很多,在谷歌上搜索了很多关于这个话题的信息,但都找不到答案。我认为这根本不可能,因为你已经把那些数字已经被划掉的信息存储在某个地方了。 我的代码到现在为止: - 但是如果有一个解决方案,如果有人

  • 我选择了“使用C进行编程原理和实践”,并且正在做一个涉及埃拉托色尼筛的早期问题,我有意想不到的输出,但我无法确定问题到底是什么。这是我的代码: 这个问题目前只要求我使用这种方法找到最大100的质数。我还尝试使用当前的“goto”方法在某些情况下跳出双循环,我还尝试在检查循环之后使用带有if语句的布尔标志,并简单地使用“继续”语句,但都没有任何效果。 (老实说,我想既然人们说goto是邪恶的,也许它

  • 我有一个问题,我有一个需要使用数组的赋值。我需要创建埃拉托斯特尼筛算法并打印出所有素数。我很困惑,因为据我所知,我的操作顺序是正确的。代码如下: 我首先将数组中的所有数字设置为true。然后第二个循环将从2开始“x”,然后在其中是一个嵌套循环,它将“x”乘以“n”的值,并且只要乘积(“y”)小于1000,“n”就会继续增加。一旦“y”达到最大值,“x”就会增加一个数字,重复该过程,直到所有非质数都

  • 我正在解决欧拉项目的一些问题,必须生成200万质数来解决一个问题。我对埃拉托色尼筛的实现非常慢,但我不知道为什么。有人能解释一下这个实现的主要问题吗?我觉得它很漂亮,然后我发现它非常糟糕:(。我在网上找到了它的另一个实现,它比我的快得多。 编辑:感谢所有的答案!结论是过滤器是问题所在,因为它会遍历每个元素(而不仅仅是那些被标记为非素数的元素),而且每次都会创建一个新列表。用旧的循环和一轮过滤重写它

  • 我用Python2.7编写了一段代码,用于创建质数列表。代码是 这是否比埃拉托斯特尼筛更有效?我认为记忆效率应该更好,但我怀疑时间效率。如何计算时间和内存效率,以及如何对效率进行基准测试?

  • 本文向大家介绍如何用Java编写一个空函数,包括了如何用Java编写一个空函数的使用技巧和注意事项,需要的朋友参考一下 让我们看看如何在Java中编写一个空函数- 示例 输出结果 空函数基本上是在不定义函数的情况下创建函数的。名为Demo的类包含一个名为'my_empty_fun'的空函数,该函数只需放置两个花括号即可完成,而无需添加任何功能。在main函数中,编写了一条print语句,然后调用e