如果数字是否为素数,如何返回true或false

时间:2015-05-17 01:21:54

标签: java

我必须使用用户输入数字的函数编写代码,然后函数验证该数字是否为素数。我在主要功能和“主要”功能之间建立连接时遇到了麻烦。

public static void main(String args []){
    Scanner input = new Scanner(System.in);
    int number;
    int i;
    int a;

    System.out.println("Enter number");
    number = input.nextInt();

    for(i = 1; i < (number + 1); i++){
        if(number % i==0){
            a++;
        }
    }

    System.out.println(prime(m));
}

public static boolean prime(boolean m){
    boolean m = false;

    if(a!=2){
        return m;
    }else{
        return m = true;
    } 
}

3 个答案:

答案 0 :(得分:0)

根据我对您的代码的理解,您要求用户输入一个数字,然后检查将它从1分为n的所有数字。如果除以它的数字量不等于2,则该数字为素数。

这意味着 prime函数应该以整数作为参数,在你的情况下,这个整数是变量a。

您想要的下一件事是素数函数返回true或false

鉴于这些观察,下面是以下代码:

public class IsPrime {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    int number, i, a = 0;

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

    for (i = 1; i < (number + 1); i++) {
        if (number % i == 0) {
            a++;
        }
    }

    System.out.println(prime(a));
}

public static boolean prime(int a) {
    if (a != 2) {
        return false;
    }

    return true;
}

}

答案 1 :(得分:0)

您收到消息“m”尚未初始化,因为Java希望您在使用之前初始化局部变量(并且有充分的理由,因为您可以阅读herehere

此外,您应该返回一个布尔值而不是一个String。将您的主要方法更改为:

public static boolean prime(int number){

    int i;

    // a should not be a parameter but a local variable
    int a = 0;

    for(i=1;i<(number + 1);i++){
        if(number % i==0){
            a++;
        }
    }

    // if the number of dividers is 2 (only 1 and the number itself), then its a prime number, so a==2 will give you true as result for a prime number
    return (a == 2);

}

答案 2 :(得分:0)

这是检查素性的一种非常奇怪的方法。您不需要计算所有因素:您只需要找到其中一个因素。试试这个:

public static void main(String args []){
    Scanner input = new Scanner(System.in);

    System.out.println("Enter number");
    int number = input.nextInt();

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

public static boolean isPrime(int number){

    for (int i = 3; i*i <= number; i++)
    {
        if (number % i != 0)
            return false;
    }
    return true;
}