1>题目描述
- 题目描述
- 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
- 最后一个数后面也要有空格
- 输入描述:
- 输出描述:
- 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4be10f41eb0d157b1dab870592c8a1f4.png)
2>方法一
- 利用了一个性质
- 所以首先在[2,sqrt(n)]之间寻找质因子。
- 找完之后,如果此时x == 1 则说明所有质因子已经寻找到了
- 否则说明 最后的num是最后一个质因子
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
long x = sc.nextLong();
long k = (long)Math.sqrt(x);
for(long i=2;i<=k;++i){
while(x%i == 0){
System.out.print(i+" ");
x/=i;
}
}
System.out.println(x == 1?"":x+" ");
}
}
3>质数的计算
- 利用性质,一个合数的最小质因子小于该合数开根号
- 也就是说如果某个数可以与其开根号后某个数整除则说明它不为质数。