书上说这个循环还可以进一步优化,提示是内部循环的次数可以减少,想了一会,实在想不出来,请问各位有什么高见么?
public class FindFactors
{
  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();
    }
  }
}

解决方案 »

  1.   

    代码修改为下面,就可以减少循环次数:
    public class FindFactors
    {
      public static void main(String[] args)
      {
        for (int i = 2; i <= 100; i++)
        {
          System.out.print("Factors of " + i + ": ");
          for (int j = 2; j <= Math.sqrt(i); j++)
          {
            if (i % j == 0)
              System.out.print(j + " ");
          }
          System.out.println();
        }
      }
    }
      

  2.   


    public class FindFactors
    {
      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();
        }
      }
    }
      

  3.   

    ... 发错了public class FindFactors
    {
      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 / 2; j++)
          {
            if (i % j == 0)
              System.out.print(j + " ");
          }
          System.out.print(i);
          System.out.println();
        }
      }
    }
      

  4.   

       for (int j = 2; j <= i; j++)
          {
            if (i % j == 0)
              System.out.print(j + " ");
          }
    内循环中当j==i的时候直接输出,j要小于等于i/2,这样就会减少循环!