我需要用Java创建一个程序来确定一个数是否为素数。使用递归方法确定用户输入的质数
用户应输入任意数字,程序将确定它是否为素数,并显示“不是素数”或“素数”。我的代码现在编译并运行,但它总是说一个数字不是总理,即使它是。
import java.util.Scanner;
public class PrimeNumber
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int constant = 0;
int variable = 0;
System.out.println("Enter a Number to test if Prime or Not");
constant = input.nextInt();
variable = constant;
double answer = 0.0;
answer = testPrime(constant, variable);
System.out.println(+answer);
if (answer == 1)
{
System.out.println(+constant + " is a prime number.");
}
else
{
System.out.println(+constant + " is NOT a prime number.");
}
}
public static double testPrime(int number, int divide)
{
double prime = 0.0;
prime = number%divide;
if (prime > 0 && divide != number)
{
return testPrime(number, divide - 1);
}
else
{
return prime;
}
}
}
为什么递归?没有理由为此使用递归。 – nhahtdh 2013-04-26 18:50:27
你应该使用整数/长这个。没有浮点素数,速度更快。 – 2013-04-26 18:51:05
这是一种计算素数的蛮力方法。你应该看看费马小定理[这里](http://www.wikihow.com/Check-if-a-Number-Is-Prime)以及一些其他算法,如果你想做大素数。 – Suedocode 2013-04-27 15:39:53