【问题标题】:Potentially simple math - Prime Number Code可能很简单的数学 - 素数代码
【发布时间】:2018-07-31 04:55:30
【问题描述】:

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

// 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 之外] 不产生余数,则它不是素数)。
  • 声明一个布尔值来保存数字是否为素数。
  • 创建一个 for 循环来测试 2 到 100 之间的每个数字
  • 默认 isprime 布尔值为 true
  • 创建一个 for 循环以将质数除以 2 和 ??? 之间的数字(我不明白这个 for 循环的条件部分)

  • 我尝试在此处输入 system.out.print 选项以显示每次迭代时 x 和 y 的值,但它随后将非素数计算为素数。

  • 如果将质数除以所有这些数字,并且有一个没有余数的数字,请将 boolean isprime 更改为 false。
  • 如果在遍历所有值之后,所有值都有余数,则打印出这是一个素数。

【问题讨论】:

  • 对不起!我不得不多次使用代码格式化按钮,但我得到了它的工作。
  • @JuanCarlosMendoza.. 可以删除不赞成票。 OP 确实收到了消息。
  • @displayname.. 请在您的标准输出 (system.out.print) 中添加一点“sn-p”。它会改善你的问题。

标签: java for-loop iteration


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多