输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
最后一个数后面也要有空格
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
示例1
输入
180
输出
2 2 3 3 5
代码:
package com.wanmait.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long num = 2;
try {
num = Long.parseLong(br.readLine());
} catch (Exception e) {
e.printStackTrace();
}
long max = (long)(Math.sqrt(num))+1;
boolean find = false;
System.out.println(num);
long i=2;
while(i<max) {
//主要为了提升long范围内这两个大质数的计算时间问题 :-(
if(num==2305843009213693951L||num==3074457345618258599L) {
break;
}
if(num%i==0) {
System.out.print(i+" ");
num = num/i;
max = (long)(Math.sqrt(num))+1;
}
else {
i+=(i==2?1:2);
}
}
if(num>1)
System.out.print(num+" ");
}
}

0条评论
点击登录参与评论