在Java中使用If/Else返回布尔值
我正在尝试编写代码来检查某个数字是否为质数,如果它是质数,则使用if/Else语句返回true
。
我给出了以下代码,我已经写好了。 它始终显示异常";Missing Return Statement&Quot;。
class Main
{
static boolean isPrime(int x)
{
for(int i = 2;i <= x/2;++i)
{
if(x%i == 0)
{
return false;
}
else
{
return true;
}
}
}
public static void main (String args[])
{
boolean prime = isPrime(11);
System.out.println(prime);
}
}
解决方案
代码中的问题是,您第一次返回的模数不是0。这是错误的,因为您必须确保x
不能被范围[2, x/2]
中的任何数字整除。
按如下方式修改您的方法:
static boolean isPrime(int x)
{
if(x <= 1)
{
return false;
}
boolean ret = true;
for(int i = 2;i <= x/2;++i)
{
if(x%i == 0)
{
ret = false;
break;
}
}
return ret;
}
这样,只要你确定这个数不是质数,你就中断。如果它是素数,它将完成循环,而不会找到非零余数。
x<=1
场景是您遇到警告的原因,因为对于那些输入,您的方法在没有遇到return
语句的情况下退出。我刚在函数开始时检查了此条件。
查找素数
我只是建议了isPrime
实现的修复方法,这是查找质数的最简单方法。无论如何,有更聪明的方法来找到它们:
- Siege of Eratosthenes方法
- 可以只检查奇数,节省一半的时间
- 您可以检查
x
是否属于6*x±1
集合。事实上,数字5中的所有质数都遵循这个规则
相关文章