题解 | #质数因子#
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;
/**
- 质数因子
/
public class IntegerFactorization {
/*
- 描述
- 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)
- (如180的质因子为2 2 3 3 5 )
- 数据范围:1 ≤ n ≤ 2 × 10^(9) +14
- 输入描述:
- 输入一个整数
- 输出描述:
- 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
- 示例1
- 输入:180
- 输出:2 2 3 3 5
- 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 */ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; while ((str = br.readLine()) != null) { int num = Integer.parseInt(str); StringBuilder sb = new StringBuilder(); for (int i = 2; i <= Math.sqrt(num); i++) { //此处为了因子是从小到大加入字符串缓冲区 if (num % i == 0) { sb.append(i).append(" "); num = num / i; i--; // 保证了若i是因子,那么取到原数的因子后,继续从i开始 } } sb.append(num).append(" "); System.out.println(sb.toString()); } } }