題目描述
功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子爲2 2 3 3 5 )
最後一個數後面也要有空格
詳細描述:
函數接口說明:
public String getResult(long ulDataInput)
輸入參數:
long ulDataInput:輸入的正整數
返回值:
String
輸入描述:
輸入一個long型整數
輸出描述:
按照從小到大的順序輸出它的所有質數的因子,以空格隔開。最後一個數後面也要有空格。
java實現與解釋
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。
(2)如果n<>k,但n能被k整除,則應打印出k的值,並用n除以k的商,作爲新的正整數你n,
重複執行第一步。
(3)如果n不能被k整除,則用k+1作爲k的值,重複執行第一步。
//最蠢的辦法,效率極其低下
//牛客測試數據 62ms 9300k
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long number = 0;
while(sc.hasNext()) {
number = sc.nextLong();
isPrimerFactors(number);
}
}
private static void isPrimerFactors(long num) {
long number = num;
while(number != 1){
for(int i = 2; i <= number; i++){
if(number % i == 0) {
number /= i;
System.out.print(i + " ");
break;
}
}
}
}
}