> 文档中心 > Java-求数字n的所有约数

Java-求数字n的所有约数


题目

求数字n的所有约数例如:输入n=6,则输出 1,2,3,6输入n=10,则输出1,2,5,10输入n=16,则输出1,2,4,8,16

方法一:

public static void getDivisor01(int n) {for (int i = 1; i <= n; i++) {if (n % i == 0) {System.out.println(i);}}}

方法一的优化

public static void getDivisor04(int n) {for (int i = 1; i * i <= n; i++) {if (n % i == 0 && i == n / i) {// 控制台打印 i ,只打印i,不打印(n/i)目的是为了去重//会出现重复值,所以在这里去重System.out.println(i);} else if (n % i == 0) {// 约数是成对出现的,所以当n%i==0时,i 和(n/i)都是约数System.out.println(i);System.out.println(n / i);}}}

方法二:

public static void getDivisor05(int n) {HashSet<Integer> set = new HashSet<Integer>();for (int i = 1; i <= Math.sqrt(n); i++) {if (n % i == 0) {set.add(i);set.add(n / i);}}System.out.println(set);}

虫部落快搜