书上说这个循环还可以进一步优化,提示是内部循环的次数可以减少,想了一会,实在想不出来,请问各位有什么高见么?
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();
}
}
}
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();
}
}
}
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();
}
}
}
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();
}
}
}
{
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();
}
}
}
{
if (i % j == 0)
System.out.print(j + " ");
}
内循环中当j==i的时候直接输出,j要小于等于i/2,这样就会减少循环!