输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如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条评论
点击登录参与评论