求某数的所有因子 &求某数的所有素因子
public class YinZi {
public static void main(String[] args) {
yinZi(60);
System.out.println("\n----------------");
suYinZi(60);
}
/**
* 求n的所有因子
*/
public static void yinZi(int n) {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
System.out.print(i+" "+n/i+" ");
}
}
}
/**
* 求n的所有素数因子
*/
public static void suYinZi(int n) {
for (int i = 2; i <= n; i++) {
while (n % i == 0) {
n /= i;
System.out.print(i+" ");
}
}
}
/**
* 求n的所有素数因子 (稍微优化,只使用2和奇数去除)
*/
public static void suYinZi(int n) {
if(n <=0 )return;
while(n % 2 == 0){
n /= 2;
System.out.print(2+" ");
}
for (int i = 3; i <= n; i+=2) {
while (n % i == 0) {
n /= i;
System.out.print(i+" ");
}
}
}
}
效果:
2 30 3 20 4 15 5 12 6 10
----------------
2 2 3 5