如何返回true或fals,如果一个数字是素数



我必须使用用户输入一个数字的函数编写代码,然后函数验证该数字是否为prime。我很难在主要功能和" Prime"功能之间建立连接。

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;
    } 
}

从我对您的代码的理解中,您要求用户输入一个数字,然后检查将其从1到n分开的所有数字。如果划分的数量不等于两个,则数字为prime。

这意味着 prime函数应将整数作为其参数,在您的情况下,此整数是变量a。

您想要的接下来是 prime函数,要返回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;
}
}

您收到消息" m"尚未初始化,因为Java希望您在使用局部变量之前初始化本地变量(并且有充分的理由,您可以在此处阅读,也可以在这里阅读

您还应该返回布尔值而不是字符串。将您的主要方法更改为:

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);

}

这是检查原始性的一种非常奇怪的方法。您无需计算所有因素:您只需要找到其中一个即可。尝试以下操作:

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;
}

最新更新