质数因子
import java.util.ArrayList;
import java.util.Scanner;
/** 功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子為2 2 3 3 5 )* * 按照從小到大的順序輸出它的所有質數的因子,以空格隔開* */public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in); long n=in.nextLong();System.out.println(getResult(n));}public static String getResult(long ulDataInput){ArrayList<Long> list=new ArrayList<Long>(); while(ulDataInput!=1){//直到數是1for(int i=2;i<=ulDataInput;i++){ if(ulDataInput%i==0){//如果能被整除if(isPrime((long) i)){list.add((long)i);//是質數就添加到list中ulDataInput/=i;//把除的結果迭代break;}}} }//list轉換為字符串StringBuffer sb=new StringBuffer();for(int i=0;i<list.size();i++){sb.append(list.get(i));sb.append(" ");}sb.deleteCharAt(sb.length()-1);return sb.toString();}public static boolean isPrime(Long k){//判斷能被整除的因子是不是質數,質數只有1和它本身的約數,有其他約數的都不是質數for(int i=2;i<Math.sqrt(k);i++){if(k%i==0){return false;}}return true;}}
總結
- 上一篇: Android中的Parcelable接
- 下一篇: 解析XML方式-DOM,SAX