【发布时间】:2019-02-14 19:37:45
【问题描述】:
这是关于使用这种方法找到从 2 到 1000 的素数,但我无法得到解决方案,我一直在思考并尝试解决这个问题三天。我急需帮助,如果有人能帮助我,我将不胜感激
我尝试了另一个 for 循环和一个 if 语句,因为我的老师说我只需要另一个循环或只需要一个代码行,但我似乎无法得到解决方案。我在这方面真的很糟糕,所以如果我的代码看起来很糟糕,我很抱歉
public class Practica {
public static void main(String []
byte []marcado = new byte [1000];
for (int i = 2; i < 1000; i++);
if (marcado[i] == 1) {
for (int j = 2; i*j < 1000; j++) {
marcado [i*j] = 0;
}
}
我希望打印所有素数
【问题讨论】:
-
JavaScript 与 Java 无关,它是一种完全独立的语言。至于你的代码,你能描述一下它到底应该做什么吗?
-
我会退后一步,重新审视你迄今为止在课堂上学到的所有东西。您的代码中有多个问题。例如:你的第一个 for 循环,你有一个尾随 ;在那条线上。这意味着 for 循环有一个 EMPTY 主体。这意味着您的代码 ... 实际上甚至不应该编译,因为在该行之后没有定义 i 。将您的 for 循环体也放入 { 大括号 } 中。除此之外,您当前的代码只是将 0 分配到一个数组中,该数组的每个插槽中都有 0。
-
好的,那里有很多编译错误。一个一个地处理它们,试图让代码看起来像你以前见过的东西。特别要注意在不应该有分号的地方出现杂散分号。此外,在
marcado[i]结果为 1 的情况下,您将需要一行代码来实际打印质数。您还没有提供它。最后,我建议您以不同的方式使用 0 和 1,因为数组最初将充满零,而不是一。 -
要解决你真正的问题:首先研究 E 的筛子是如何工作的。有许多教程和网站解释了它是什么以及它是如何工作的。从那里,只需自己计算几个数字的算法。然后尝试将您的知识转化为代码。
标签: java arrays for-loop if-statement sieve-of-eratosthenes