判断一个数是否为质数

Finding if a number is prime

我刚开始 java 课程。任务是编写一个代码,输出一个数是否为质数。

这就是我的。它提出了很多错误。我找到了很多答案,但他们都说使用我们没有学过的线。

public class PrimeNumbers2 {
public static void main(String[] args) {
    int number = 9;
    int count = 2;
    Boolean prime = true;

    if (number % count == 0) {
        prime = true;
    }
    else {

        for (count = count + 1) {

        if (count + 1>= number) {
            prime = false;
        }
        else
        {
            prime =  false;
        }

    }
    if (prime == true)
    {
        System.out.println("Number is prime");
    }
     else
    {
        System.out.println("number is not prime");
    }
}}}

如果我们在这里讨论的是一个超级简单的实现,您可以先检查数字是否使用余数运算符,即如果 number % 2 == 0,则 prime = true。如果不是这种情况,设置 count = 3 并设置一个 while 循环,终止条件为 while (count < number)。在 while 循环中,检查 numbercount 的余数是否为零。如果是,它就是质数。如果不是,则将 count 递增 1 并继续循环。

您应该考虑如何用自然语言表述您的问题。例如:素数是一个只能被其自身和 1 整除的数。 或相反:对于大于 1 和 1 的范围内的每个数字比我的数字小,应该没有分隔符

现在要用简单的 java 代码来表述您的问题,请尝试实现您的陈述。

   for(int count=2; count < number; count++) {
      if(number % count == 0) {
          System.out.println("Number is not a prime!");
          // Since we are finished return and do no more iterations
          return;
      }
   }
   // we iterated all possible numbers and can return successfully
   System.out.println("Number is a prime");

还要确保提前检查边缘情况。例如。负数。 请注意,这是一种低效的解决方案,但却是一种直接的解决方案。

您的代码中存在多个错误和逻辑错误。到这里就清理好了。

int number = 15;
int count = 2;
boolean prime = true;


for (int i = count; i <= number/2; i++ ) {

   if (number % i == 0) {
      prime = false;
  }
}


if (prime == true)
{
    System.out.println("Number is prime");
}
else
{
    System.out.println("number is not prime");
}