给定三个数字作为输入,如果其中至少有一个是素数,则返回true。要解决此问题,请定义一个检查数字是否为素数的函数并使用该函数
MyApproach:
我创建了一个函数,首先检查num是否为prime(CHECK PRIME)。检查3个数字后,如果在该函数中任何一个数字是素数,它应该返回true 否则是假的。
但我对测试用例的错误是
以下是我的代码:
public boolean anyonePrime(int num1, int num2, int num3)
{
boolean b1=checkPrime(num1);
boolean b2=checkPrime(num2);
boolean b3=checkPrime(num3);
if((b1==true) ||(b2==true) ||(b3==true)) //@Edit
return true;
else
return false;
}
public boolean checkPrime(int num)
{
boolean b0=true;
if(num==1)
return false; //@Edit
else
{
for(int i=2; i<=num/2; i++)
{
if(num % i==0)
{
return false; //@Edit
}
}
return true;
}
if(b0==true)
return true;
else
return false;
//write your code here
}
}
@ Edit传递所有测试用例 对于输入
Parameters ActualOutput Expected Output
'169' '361' '529' true false
答案 0 :(得分:3)
您的代码中似乎有拼写错误。您在检查b0=true;
之前设置了if(b0==true);
,因此它将始终返回true
。一件简单的事情就是在任何支票发现它不是素数时立即返回false
,而不是将b0
设置为false
然后继续做更多工作。
答案 1 :(得分:3)
主要问题是始终b0=true
。但..
答案 2 :(得分:2)
试试这个:
public boolean anyonePrime(int num1, int num2, int num3)
{
return (checkPrime(num1) || checkPrime(num2) || checkPrime(num3))
}
public boolean checkPrime(int num)
{
boolean b0=true;
if(num==1)
b0=false;
else
{
for(int i=2; i<=num/2; i++)
{
if(num % i == 0)
{
b0=false;
}
}
}
if(b0==true)
return true;
else
return false;
//write your code here
}
}
我刚删除了&#39; b0 = true行&#39;并整理了一些代码