我必须使用用户输入数字的函数编写代码,然后函数验证该数字是否为素数。我在主要功能和“主要”功能之间建立连接时遇到了麻烦。
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;
}
}
答案 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希望您在使用之前初始化局部变量(并且有充分的理由,因为您可以阅读here和here
此外,您应该返回一个布尔值而不是一个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;
}