我正在学习方法,并且正在尝试编写基本上可以告诉数字是否为素数的代码。但是,我一直遇到错误:
error: cannot find symbol
return(isPrime);
^
error: illegal start of type
return(isPrime);
这是我目前的代码(我希望我正确使用该方法):
import java.util.Scanner;
public class DoublePalindromicPrimes{
public static void main(String args[]){
Scanner in= new Scanner(System.in);
System.out.println("Please enter a number:");
int n = in.nextInt();
//prime(n);
boolean resultPrime = prime(n);
if (resultPrime){
System.out.println("This is a prime");
}
else {
System.out.println("This is not a prime");
}
}
public static boolean prime(int x){
for (int i=2;i<x;i++){
boolean isPrime;
if (x%i==0){
isPrime=false;
}
else{
isPrime=true;
}
}
return isPrime;
}
}
感谢任何帮助!
答案 0 :(得分:4)
public static boolean isPrime(int x)
{
if(x > 2) {
if(x%2 == 0) {
return false;
} else {
int sqrt = (int)(Math.sqrt(x));
for(int i=3;i<=sqrt;i+=2) {
if(x%i == 0) {
return false;
}
}
}
return true;
} else if(x==2) {
return true;
} else { //1, 0, and negatives
return false;
}
}
答案 1 :(得分:3)
将其更改为
return isPrime;
注意空格并从isPrime
for for循环
答案 2 :(得分:2)
您在循环中声明了isPrime
,因此return
语句无法看到它。把它移到循环外面。
答案 3 :(得分:2)
public static boolean prime(int x) //throws InvalidNumberException
{
if (x <= 0)
{
//throw new InvalidNumberException("The number is invalid");
}
int squareRoot = (int)(Math.sqrt(x));
for (int i = 2; i <= squareRoot; i++)
{
if (x % i == 0)
{
return false;
}
}
return true;
}
这是一个优化的主要验证器。