ami*_*elz 1 java recursion primes numbers
我知道这不是寻找素数的最佳方式,也不是最有效的方法; 但是,我似乎无法找到为什么169计为素数的原因(对于较小的数字,它可以正常工作).
public static int checkPrime(int num, int i)
{
if (i == num)
return 1;
else
{
if (num % i == 0)
return 0;
else
checkPrime(num, i+1);
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
主类:
System.out.println("Type a number");
number = reader.nextInt();
if ((number % 10) % 2 == 0)
result = 0;
else
result = checkPrime(number, 2);
if (result == 1 || number == 2)
System.out.println(number + " is a prime number");
else
System.out.println(number + " is NOT a prime number");
Run Code Online (Sandbox Code Playgroud)
更换int用boolean更好的表现,并返回递归调用的价值,你的方法是这样的:
public static boolean checkPrime(int num, int i)
{
if (i == num)
return true;
else
{
if (num % i == 0)
return false;
else
return checkPrime(num, i+1);
}
}
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用num < 2,它会一直运行直到i溢出.因此,作为主要的主要检查功能,您可以编写如下内容:
public static boolean checkPrime(int num)
{
if(num<2)
return false;
else
return checkPrime(num, 2);
}
Run Code Online (Sandbox Code Playgroud)
顺便说(number % 10) % 2一下相当于number % 2.