当前位置: 代码迷 >> java >> 我怎样才能完成我的关于 Erathostenes 筛子的代码?
  详细解决方案

我怎样才能完成我的关于 Erathostenes 筛子的代码?

热度:80   发布时间:2023-07-31 13:41:46.0

这是关于使用这种方法找到从 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;
      }
    }

我希望打印出所有的质数

试一试:

public static void main(String[] args) {
        byte[] marcado = new byte[1000];
        for (int i = 2; i*i < 1000; i++) {
            if (marcado[i] == 0) {
                for (int j = 2; i * j < 1000; j++) {
                    marcado[i * j] = 1;
                }
            }
        }

        // print the numbers:
        for (int i = 1; i < 1000; i++) {
            if(0 == marcado[i]){
               System.out.print(" " + i);
            }
        }
    }

除了删除语法错误之外,我还颠倒了逻辑,使得 marcado[i]==0 表示素数,否则表示非素数。

基于您的方法的另一种可能性是用“1”(例如填充)初始化所有数组元素;