有人可以帮我找到我在这里的代码中做错了什么。它工作不正常。我想制作一个代码来查看数字是否为素数。这是方法:
public static boolean isPrime(int number)
{
boolean result = true;
for (int i = 2; i < number / 2 && result; i++)
{
if (number / i == 0)
{
result = false;
}
}
return result;
}
答案 0 :(得分:5)
/
和%
运算符之间存在差异;剩下的就是你自己。
作为提示:
4 / 2 == 2
4 % 2 == 0
答案 1 :(得分:1)
我看到的两个问题。
1)for (int i = 2; i < number / 2 && result; i++)
您试图将整数i与布尔结果进行比较。
2)if (number / i == 0)
应为if (number % i == 0)
。要检查一个数字是否为素数,你需要检查一个数字是否有除1以外的任何整数和数字本身,它将除以给出余数为0的数字。%
运算符就是这样做的。
答案 2 :(得分:0)
你的代码应该是:
public static final SMALLEST_PRIME = 2;
private boolean isPrime(int number)
{
for (int i = SMALLEST_PRIME; i * i <= number; i++)
{
if (number % i == 0)
{
return false;
}
}
return true;
}
/
和%
之间存在差异。一个是除法运算符,一个是模运算符。模数运算符用于检查余数,这是检查因子的预期结果。
答案 3 :(得分:0)
As&#39; Jigar&#39;说你应该使用%
而不是/
检查这个数字是否可以分割给我,此外程序员通常会在某些情况下利用返回,包括你所面临的情况。
看一下这个片段:
public static boolean isPrime(int number)
{
for (int i = 2; i < number / 2; i++)
{
if (number % i == 0)
{
return false;
}
}
return true;
}