给定三个数字作为输入,return 如果其中至少一个是素数则为真
Given three numbers as input,return true if at least one of them is a prime number
Given three numbers as input, return true if at least one of them is a prime number. For solving this problem, define a function that checks whether a number is a prime or not and use that function
我的方法:
我创建了一个函数,首先检查 num 是否为素数(CHECK PRIME)。检查 3 个数字后,如果该函数中的任何数字为素数,它应该 return true
否则为假。
But I am getting wrong Ans for the test case
下面是我的代码:
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
您的代码中似乎有拼写错误。您在检查 if(b0==true);
之前设置 b0=true;
,因此它将始终 return true
。简单的做法是一旦任何检查发现它不是质数就立即 return false
,而不是将 b0
设置为 false
然后继续做更多工作。
试试这个:
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
}
}
我刚刚删除了 'b0 = true line' 并整理了一些代码
主要问题是 b0=true
总是。但是..
- 它也相当低效,因为如果第一个是素数,你不会立即停止,
- 有除数也不立马停止,
- 当你达到num的平方根时你也不会停下来
- 还有 b3=true 应该是 b3==true。
Given three numbers as input, return true if at least one of them is a prime number. For solving this problem, define a function that checks whether a number is a prime or not and use that function
我的方法:
我创建了一个函数,首先检查 num 是否为素数(CHECK PRIME)。检查 3 个数字后,如果该函数中的任何数字为素数,它应该 return true 否则为假。
But I am getting wrong Ans for the test case
下面是我的代码:
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
您的代码中似乎有拼写错误。您在检查 if(b0==true);
之前设置 b0=true;
,因此它将始终 return true
。简单的做法是一旦任何检查发现它不是质数就立即 return false
,而不是将 b0
设置为 false
然后继续做更多工作。
试试这个:
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
}
}
我刚刚删除了 'b0 = true line' 并整理了一些代码
主要问题是 b0=true
总是。但是..
- 它也相当低效,因为如果第一个是素数,你不会立即停止,
- 有除数也不立马停止,
- 当你达到num的平方根时你也不会停下来
- 还有 b3=true 应该是 b3==true。