这个代码有什么问题?

时间:2014-03-02 07:18:44

标签: java

有人可以帮我找到我在这里的代码中做错了什么。它工作不正常。我想制作一个代码来查看数字是否为素数。这是方法:

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;
}

4 个答案:

答案 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;
}