描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: 1≤n≤2×109+14 1≤n≤2×109+14
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入:
180
输出:
2 2 3 3 5
思路1: 设定i=2,i一直递增,当N除以i余数为0的时候,N设定为N/i
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
质因子牵涉到两个概念:因子和质数;
因子,又叫“因数”或“约数”,如果整数a能被整数b整除,那就有一个整数q,使得 a=bq,则b和q都称为a的一个因子.15=3乘以5,所以3和5都是15的因子;8=2乘以4,那么2和4 就是8的因子。
质数,又叫“素数”,在大于1的自然数中,仅有1和本身为自己的因子的数叫素数。7 只有1、7这两个因子,所以是素数。8有1、2、4、8四个因子,除了1、8,还有2和4,所以就不是素数。
设定i=2,i一直递增,当N除以i余数为0的时候,N设定为N/i,否则i++,直到i>N,这样找到的所有N除以i余数为0的i就是N的所有的质数因子。
Java代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLong()) {
int num = scanner.nextInt();
fun(num);
}
}
private static void fun(int num) {
for (int i = 2; i <= Math.sqrt(num); i++) {
while (num % i == 0) {
System.out.print(i + " ");
num /= i;
}
}
if (num > 1) {
//最后也要空格
System.out.print(num+" ");
}
}
}