这是关于使用这种方法找到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;
}
}
我希望打印出所有素数
答案 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”(例如,填充);