Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何让这个for循环只打印素数?_Java - Fatal编程技术网

Java 我如何让这个for循环只打印素数?

Java 我如何让这个for循环只打印素数?,java,Java,我需要它做的是打印所有的素数,如果输入也是素数,则从1开始,到输入结束。下面是我的代码: static void primeNumbers(int n) { boolean isPrime; System.out.println("All the prime numbers up to " + n + " are -->"); for (int prime = 2; prime < n; prime = prime++) { if (n

我需要它做的是打印所有的素数,如果输入也是素数,则从1开始,到输入结束。下面是我的代码:

static void primeNumbers(int n) {

boolean isPrime;

System.out.println("All the prime numbers up to " + n + " are -->");
for (int prime = 2; prime < n; prime = prime++) {
  if (n % prime == 0) {
    isPrime = false;
  }
  if(isPrime == true){
    System.out.println(prime);
  }
}
}
静态空素数(int n){
布尔互质;
System.out.println(“所有到“+n+”的素数都是-->”;
对于(int prime=2;prime

我的老师说我需要做一个嵌套的for循环,但我不知道该放什么进去。我还收到一个错误消息,说我上次使用iPrime时没有初始化。

您需要执行类似操作才能使程序正常工作

static void primeNumbers(int n) {

    boolean isPrime = true;

    System.out.println("All the prime numbers up to " + n + " are -->");
    for (int prime = 2; prime < n; prime++) {
        if (n % prime == 0) {
            isPrime = false;
        }else{
            isPrime = true;
        }
        if(isPrime){
            System.out.println(prime);
        }
    }
}
静态空素数(int n){
布尔值isPrime=true;
System.out.println(“所有到“+n+”的素数都是-->”;
对于(int prime=2;prime
您需要实际检查素数,而不仅仅是查看数字是否是n的因子:

静态布尔值isPrime(int n){
if(n<2){
返回false;
}
如果(n%2==0){
返回n==2;
}

对于(int k=3;k*k有必要初始化iPrime

埃拉托斯特尼斯筛是著名的素数求法

我想下面的网址会对你有所帮助


以下是解决方案之一

 public static void main(String[] args) {
        int n = 23;
        boolean[] isPrime = new boolean[n + 1];

        for (int i = 1; i <= n; i++) {
            isPrime[i] = true;
        }

        for (int i = 2; i <= n / i; i++) {
            if (isPrime[i]) {
                for (int j = i; j <= n / i; j++) {
                    isPrime[i * j] = false;
                }
            }
        }

        for (int i = 1; i <= n; i++) {
            if (isPrime[i]) {
                System.out.println(i);
            }
        }
    }
publicstaticvoidmain(字符串[]args){
int n=23;
布尔值[]isPrime=新布尔值[n+1];

对于(int i=1;i),每当声明变量时,总是需要对其进行初始化。例如,布尔值isPrime=false;这实际上并不检查素数。这只是检查“素数”是否为是
n
的一个因子。当我使用此代码时,它会无限打印数字2。您试图作为参数传递的数字是多少。这对我来说很好。用户输入的任何数字对我来说都很好。您能告诉我您做了什么吗?请您的帖子解释它是如何解决问题的。谢谢,我对我的解决方案的版本。