题目描述:
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
思路启发:
根据表达式 2*2*3*3*5=180 ,我们可以想到 180/2=90=2*3*3*5 ,同样 90/2=45=3*3*5 ,直至 5/5=1。可以想到设置一个候选数pom=2开始被正整数180除,若能整除则记录,正整数转成180整除pom的得数;否则pom++,寻找下一个整除正整数的候选数。一直循环直至剩余的正整数小于pom。
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); while(input.hasNextLong()){ long num = input.nextLong(); System.out.println(getResult(num)); } } public static String getResult(long ulDataInput){ int pom = 2; StringBuilder output = new StringBuilder(); while(ulDataInput >= pom){ if (ulDataInput % pom == 0){ ulDataInput /= pom; output.append(pom).append(" "); } else pom++; } return output.toString(); } }