Java 初学者指南 : FindFac & Nested Loops

标签 java

Java 初学者指南第 5 版中,FindFac 类使用嵌套循环来查找 2 到 100 之间的因子。

package examples;

public class FindFac {

  public static void main(String args[]){

   for(int i=2; i <= 100; i++) {
        System.out.print("Factors of " + i + ": ");
        for(int j=2; j < i; j++)
            if((i%j) == 0) System.out.print(j + " ");
        System.out.println();
    }
  }
}

它提到:

The preceding program can be made more efficient. Can you see how? (Hint: The number of iterations in the inner loop can be reduced)

据我所知,它暗示“j++”,但我不确定如何改进代码。

最佳答案

从 2 到 i-1 的内循环迭代器。

假设 i 为 100,j 为 2。此代码中的内部循环将从 2 迭代到 99。

但是你只需要迭代直到 i 的 sqrt 为 10。

这是因为当你得到 i 的一个因数(例如 5)时,100/5 是另一个因数,即 20。

因此,通过在内循环中迭代直到 10,您应该获得所有因子。

关于Java 初学者指南 : FindFac & Nested Loops,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22239525/

相关文章:

java - 最新 JAXB 版本 (Java 7) 中的 XmlID/XmlIDREF 和继承

java - 同步块(synchronized block)锁定对象并等待/通知

java如何在属性中配置注释调度程序fixedDelay

java - 这是创建 java 文件(以编程方式)的正确方法吗?

java - 回收器 View 无法正常工作,没有任何错误

java - 使用 android studio 在 java 文件中找不到 android.support.v7.widget.toolbar?

java - 用 ImageIcon 刷新 JButton 的方法有哪些?

java - 过滤 ElementsCollection

java - 打印到控制台时如何设置字符串的字体、类型和大小?

java - Java 中的可序列化接口(interface)