AcWing 867. 分解质因数
原题链接
简单
题目描述
样例
import java.util.*;
/*
质因数就是一个数的约数,并且是质数。
把一个合数写成几个质数相乘的形式表示,这也是分解质因数,如16=2×2×2×2,2就是16的质因数。
把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。
如果i能被2到i-1的数整除,那么n一定能被2到i-1中的数整除,因为n是i的倍数(n能被i整除)
*/
public class Main{
public static void divide(int n){
for(int i = 2 ; i <= n / i ; i ++ ){
if(n % i == 0){ // 说明是因数,但是一个数除了1之后,第一个因数都是质数
// s是指数 i是底数
int s = 0;
while(n % i == 0){
n /= i;
s++;
}
System.out.println(i+" "+s);
}
}
//n中最大只包含一个大于sqrt(n)的质因子
//最后除完之后,如果n大于1,说明最后一个数是大于根号n的那个质数,特判就行
if(n > 1) System.out.println(n+" " +"1");
System.out.println();
}
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
while(n -- > 0){
int a = scan.nextInt();
divide(a);
}
}
}