带有While循环的素数

时间:2016-03-23 18:26:50

标签: java while-loop primes

我正在尝试编写一个程序来检查它是否为素数,如果为true则返回字符串yes,如果为false则返回no。我试图在我的main方法中使用while循环但我执行它时遇到问题。我在void方法中完成了它,并且在我的main方法中调用了该方法,但这不是我想要的。

我希望它在我的main方法中,如果它是素数则返回一个字符串是,如果它不是素数,则返回一个字符串否。有什么想法吗?在下面的方法中查看我的代码。关于如何在我的main方法中转换它以返回yes或no作为字符串的任何想法?

import java.util.Scanner;

public class PrimeNumbers {
  public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = in .nextInt();

    isPrime(number);
  }

  public static void isPrime(int n) {
    if (n % 2 == 0) {
      System.out.println("It is not a prime number");
      return;
    } else {
      int i = 3;
      while (i <= Math.sqrt(n)) {
        if ((n % i) == 0) {
          System.out.println("It is not a prime number");
          return;
        }
        i = i + 2;
      }
    }
    System.out.println("It is a prime number");
    return;

  }

}

5 个答案:

答案 0 :(得分:0)

嗯,只需复制并粘贴到您的main方法正文中,然后使用boolean确定要打印的结果。

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    System.out.print("Enter a number: ");
    int number = in.nextInt();
    boolean prime = false;

    if (number % 2 == 0) {
        prime = false;
    } else {
        int i=3;
        while (i<=Math.sqrt(number)) {
            if ((number % i) == 0) {
                prime = true;
            }
            i+=2;
        }
    }

    if (prime) {
        System.out.println("It is a prime number");
    } else {
        System.out.println("It is not a prime number");
    }
}

答案 1 :(得分:0)

让您的isPrime方法返回boolean而不是void

public static boolean isPrime(int n) {
  if (n % 2 == 0) {
    return false;
  } else {
    int i = 3;
    while (i <= Math.sqrt(n)) {
      if ((n % i) == 0) {
        return false;
      }
      i = i + 2;
    }
  }
  return true;
}

然后在main检查

if(isPrime(2)) {
    System.out.println("Is a prime number!");
} else {
    System.out.println("It is not a prime number!");
}

答案 2 :(得分:0)

我有点不确定你想要的是什么。听起来你想要创建一个返回yes或返回no的函数?如果是这种情况,您可以创建以下算法:

public static String isPrime(int num){
    for(int i = 2; i < num; i++) {
        if(num % i == 0)
            return "No";
    }
    return "Yes";
}

有关如何优化此算法的详细信息,请参阅here

然后你可以在main中调用方法:

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = in.nextInt();

    System.out.println(isPrime(number)); 
}

如果您只想在主体内完成所有操作,请执行以下操作:

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = in.nextInt();
    boolean b = true;

    for(int i = 2; i < num; i++) {
        if(num % i == 0){
            System.out.println("No");
            b = false;
        }
    }
    if(b){
        System.out.println(isPrime(number));
    }
}

答案 3 :(得分:0)

/**
 * Auto Generated Java Class.
 */
public class ConvertingForToWhile {


  public static void main(String[] args) { 
    final int MAX = 66;
    boolean isPrime = true;
    int j = 2;

    while ( j <= MAX/2 && isPrime)
    {
      if( MAX % j ==0)
      {
        isPrime = false;
      }
      j++;  
    }
    System.out.println( MAX  + " is Prime? " + isPrime );

  }



}

答案 4 :(得分:0)

import java.util.*;
public class Prime
{
public static void main(String[]args)
{
int num;
int count = 0;
int divide = 2;

Scanner kb = new Scanner(System.in);

System.out.println("Enter a number user:");
num = kb.nextInt();

for(int x = 0;x<num;x++)
{
if((num%div)==0)
{
count+=1;
div = div + 1;
}
}
if(count==0)
{
System.out.println(num +" "+ "is a prime number");
}
else
{
System.out.println(num+" " +"is not a prime number");
}

}
}