可能简单的数学 - 素数码

时间:2018-02-20 18:23:16

标签: java for-loop iteration

我在浏览这个程序时遇到了一些麻烦,而这个程序在指南中使用了一个例子。它可能更像是一个数学问题,而不是一个编码问题。编辑包含代码!

// Find prime numbers between 2 and 100.
class Prime {
 public static void main(String args[]) {
  int x, y;
  boolean isprime;

  for(x=2; x < 100; x++) {
    isprime = true;

    for(y=2; y <= x/y; y++)
      if((x%y) == 0) isprime = false;

    if(isprime)
      System.out.println(x + " is a prime number.");
  }
 }
}

以下是我对该计划的理解:

  • 声明x(潜在素数)和y(将x除以的数字 - 如果有可能的除法(除了它本身或1除外)不产生余数,它不是素数)。< / LI>
  • 声明一个布尔值来保存数字是否为素数。
  • 创建一个for循环来测试2到100之间的每个数字
  • 默认isprime布尔值为true
  • 创建一个for循环,用2和???之间的数字除以素数。 (我不理解for循环的条件部分)

  • 我试图在这里放入一个system.out.print选项,以显示每次迭代时x和y的含义,然后计算非素数作为素数。 < / p>

  • 如果您按所有这些数字除以素数并且有一个没有余数的数字,请将布尔值isprime更改为false。
  • 如果在完成所有值并且所有值都有余数后,打印出这是一个素数。

1 个答案:

答案 0 :(得分:0)

它跳过的数字没有意义,检查它们是否是因素。例如,如果x = 49,它将检查到y = 7,之后条件将为false。由于它已经检查了7之前的所有数字,因此数字的平方根不可能有更高的因子。从本质上讲,它会检查数字2square root的因子。