问题描述
这是关于使用这种方法找到从 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;
}
}
我希望打印出所有的质数
1楼
试一试:
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”(例如填充)初始化所有数组元素;