質數因子

題目描述

功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如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;
                }
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章