Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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中使用while循环查找素数_Java_Loops_While Loop - Fatal编程技术网

在java中使用while循环查找素数

在java中使用while循环查找素数,java,loops,while-loop,Java,Loops,While Loop,我想找到素数。它将n除以2和(n-1)之间的所有数字,但在某些地方它是错误的。例如9,它给出true 谢谢你的帮助 public void isPrime(int n) { int i = 2; while (i <= (n - 1)) { if (n % i == 0) { System.out.println("It's not a prime number"); break; } els

我想找到素数。它将
n
除以
2
(n-1)
之间的所有数字,但在某些地方它是错误的。例如
9
,它给出
true

谢谢你的帮助

public void isPrime(int n) {

    int i = 2;
    while (i <= (n - 1)) {
        if (n % i == 0) {
            System.out.println("It's not a prime number");
            break;
        } else {
            System.out.println("It's a prime number");
            break;
        }
        i++;
    }
}
public void isPrime(int n){
int i=2;

而(i问题在于,您在第一次检查时就打破了循环:您除以2,然后仅根据该值报告答案

重新构造循环,使“它是一个素数”的决定延迟,直到您完全通过循环。您可能需要为此设置一个布尔变量


另外,我建议使用for循环,因为您知道迭代的最大次数。请注意,您不必转到n-1,只需转到sqrt(n)。

语句
I++
无法访问,因此您不希望
else{…}
包含
break
。相反,您只希望
else I++

“is prime”语句位于循环之外,因为在循环检查完所有除数之前,您不知道
n
is prime

您不希望
if
中中断
;您希望
返回
,否则它将打印“is prime”

另外,你可以让while说
while(i
来减少迭代次数(想想看)

编辑


您可能希望使用返回类型
布尔值
而不是打印消息,如果有除数,则输入
返回false
,如果没有除数,则输入
返回true

如果您的数字是素数或非素数,则此方法将返回布尔值。在for循环中,您可以看到我们首先测试2。如果我们的数字不是除数我们不需要测试任何偶数。这是一种非常有效的测试素数的方法

   boolean isPrime(int n) {
    for(int i=2;2*i<n;i++) {
        if(n%i==0)
            return false;
    }
    return true;
}
布尔isPrime(int n){
对于(int i=2;2*i
public void isPrime(int n){
如果(n%2==0){
System.out.println(“它不是质数”);
返回;
}   
否则{
int i=3;
而(i
//import java.util.*;
导入java.util.Scanner;
类素数
{公共静态void main(字符串参数[])
{int no,flag=0,a,b;
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入任何编号”);
否=sc.nextInt();
a=1;
而(a1)
{
如果(a%b==0)
{flag=1;
打破
}
b++;
}
如果(标志==0)
{System.out.println(“素数”+a);
}
其他的
{System.out.println(“非素数”+a);
}
a++;
}
}
}

这是素数的代码

import java.util.Scanner;

public class JavaPrimeNumber 
{
   public static void main(String[] args) 
   { 
      boolean checkPrime = true;
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter any number find prime number in java : "); 
      int number = sc.nextInt();

      int a = 2;
      while(a <= number / 2)
      {
         if(number % a == 0)
         {
            checkPrime = false;
            break;
         }
         a++;
      }

      if(checkPrime)
         System.out.println(number + " is a prime number.");
      else
         System.out.println(number + " is not a prime number.");
      sc.close();
   }
}
import java.util.Scanner;
公共类素数
{
公共静态void main(字符串[]args)
{ 
布尔值checkPrime=true;
扫描仪sc=新的扫描仪(System.in);
println(“输入任何数字,在java中查找素数:”);
int number=sc.nextInt();
INTA=2;
而
//import java.util.*;
import java.util.Scanner;
class Primenos
{   public static void main(String args[])
    {   int no, flag = 0, a, b;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter any no: ");
        no = sc.nextInt();
        a=1;
        while(a<=no)
        {
            flag=0;
            b=2;
            while(b<=a>>1)
            {
                if(a%b==0)
                {   flag = 1;
                    break;
                }
                b++;
            }
            if(flag==0)
            {   System.out.println("Prime number" + a);
            }
            else
            {   System.out.println("Not Prime number" + a);
            }
            a++;
        }
    }
}
import java.util.Scanner;

public class JavaPrimeNumber 
{
   public static void main(String[] args) 
   { 
      boolean checkPrime = true;
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter any number find prime number in java : "); 
      int number = sc.nextInt();

      int a = 2;
      while(a <= number / 2)
      {
         if(number % a == 0)
         {
            checkPrime = false;
            break;
         }
         a++;
      }

      if(checkPrime)
         System.out.println(number + " is a prime number.");
      else
         System.out.println(number + " is not a prime number.");
      sc.close();
   }
}