分解質(zhì)因數(shù)

將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=233*5丑搔。
(1)如果這個(gè)質(zhì)數(shù)恰等于n厦瓢,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可啤月。
(2)如果n<>k旷痕,但n能被k整除,則應(yīng)打印出k的值顽冶,并用n除以k的商,作為新的正整數(shù)n,重復(fù)執(zhí)行第一步欺抗。
(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步强重。

package Demo04Prime_Factorization;
import java.util.ArrayList;
import java.util.Scanner;
public class Prime_Factorization {
    /**
     *  將一個(gè)正整數(shù)分解質(zhì)因數(shù)绞呈。例如:輸入90,打印出90=2*3*3*5。
     * (1)如果這個(gè)質(zhì)數(shù)恰等于n间景,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束佃声,打印出即可。
     * (2)如果n<>k倘要,但n能被k整除圾亏,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)n,重復(fù)執(zhí)行第一步封拧。
     * (3)如果n不能被k整除志鹃,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
     */
    /*
    分析(小學(xué)知識(shí)復(fù)習(xí)):
        質(zhì)數(shù)的概念:指在大于1的自然數(shù)中泽西,除了1和它本身以外不再有其他因數(shù)的自然數(shù)曹铃,也就是除了1和它自身,不能被其他數(shù)整除捧杉。
        合數(shù)的概念:與質(zhì)數(shù)正好相反陕见,就是除了1和它自身以外,還可以被別的數(shù)整除味抖。最小的合數(shù)是4评甜。
        最小的質(zhì)數(shù)是2,所以分解一個(gè)合數(shù)的質(zhì)因數(shù)仔涩,則從2開始試除忍坷,如果余數(shù)為0,則2就是質(zhì)因數(shù)之一,把2記錄下來承匣,把商作為一個(gè)合數(shù)繼續(xù)
        分解蓖乘,如果余數(shù)不為零,則應(yīng)該加一韧骗,也就是試除3嘉抒,如果余數(shù)為0,則3又是質(zhì)因數(shù)之一袍暴,記錄些侍,把商又作為一個(gè)合數(shù)來分解,依次類推……
     */
    public static void main(String[] args) {
        System.out.println("請(qǐng)輸入你要分解的合數(shù): ");
        // Scanner類獲取用戶輸入的一個(gè)合數(shù)
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        System.out.println("分解結(jié)果===========================");
        // 定義一個(gè)集合來接收Prime_Factors()方法返回的list集合
        ArrayList<Long> list = Prime_Factors(num);
        // 打印該合數(shù)的所有質(zhì)因數(shù)
        System.out.println("該合數(shù)的質(zhì)因數(shù)集合為:");
        System.out.println(list);
        // 遍歷所有的質(zhì)因數(shù)集合政模,就乘積岗宣,驗(yàn)證通過方法調(diào)用得到的分解質(zhì)因數(shù)結(jié)果對(duì)不對(duì),可以不寫
        long pro=1;
        for (int i = 0; i < list.size(); i++) {
            pro=list.get(i)*pro;
            // 格式化打印結(jié)果
            if(i==0){
                System.out.print(list.get(i));
            }else if(i==list.size()-1){
                System.out.println("*"+list.get(i)+"="+num);;
            }else{
                System.out.print("*"+list.get(i));
            }
        }
        System.out.println("----------------------------------");
        // 輸出判斷結(jié)果
        if(pro==num){
            System.out.println("本次分解質(zhì)因數(shù)結(jié)果已經(jīng)經(jīng)過驗(yàn)證淋样,結(jié)果正確耗式!");
        }
    }
    /**
     * 將用戶輸入的合數(shù)傳遞給方法,最后返回一個(gè)含有該數(shù)所有質(zhì)因數(shù)的集合趁猴。
     * @param num
     * @return
     */
    public static ArrayList<Long> Prime_Factors(long num){
        // 定義一個(gè)集合來盛這些質(zhì)因數(shù)
        ArrayList<Long> list = new ArrayList<>();
        // 定義一個(gè)變量裝商值
        long n = num;
        // 定義質(zhì)因數(shù)變量刊咳,從2開始
        long k = 2;
        // 開始循環(huán),遍歷2~n的所有數(shù)儡司,注意這個(gè)n是時(shí)刻變化的
        while(k<=n){
            // 如果這個(gè)質(zhì)因數(shù)就等于這個(gè)數(shù)娱挨,說明該數(shù)是一個(gè)質(zhì)數(shù),直接記錄并退出循環(huán)
            if(k==n){
                list.add(n);
                break;
            }
            // 如果n可以被k整除捕犬,則k是n的質(zhì)因數(shù)跷坝,記錄這個(gè)質(zhì)因數(shù),并且把商值重新賦給n碉碉,k回到原點(diǎn)柴钻,重新開始
            if(n%k==0){
                list.add(k);
                n=n/k;
                k=2;
            // 如果n不能被k整除,則k不是n的質(zhì)因數(shù)誉裆,k+1顿颅,再去除
            }else{
                k++;
            }
        }
        // 返回這個(gè)數(shù)的質(zhì)因數(shù)集合
        return list;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載缸濒,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者足丢。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庇配,隨后出現(xiàn)的幾起案子斩跌,更是在濱河造成了極大的恐慌,老刑警劉巖捞慌,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耀鸦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袖订,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門氮帐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洛姑,你說我怎么就攤上這事上沐。” “怎么了楞艾?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵参咙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我硫眯,道長(zhǎng)蕴侧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任两入,我火速辦了婚禮净宵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裹纳。我一直安慰自己塘娶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布痊夭。 她就那樣靜靜地躺著刁岸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪她我。 梳的紋絲不亂的頭發(fā)上虹曙,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音番舆,去河邊找鬼酝碳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恨狈,可吹牛的內(nèi)容都是我干的疏哗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼禾怠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼返奉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吗氏,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤芽偏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后弦讽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體污尉,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了被碗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片某宪。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锐朴,靈堂內(nèi)的尸體忽然破棺而出缩抡,到底是詐尸還是另有隱情,我是刑警寧澤包颁,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布瞻想,位于F島的核電站,受9級(jí)特大地震影響娩嚼,放射性物質(zhì)發(fā)生泄漏蘑险。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一岳悟、第九天 我趴在偏房一處隱蔽的房頂上張望佃迄。 院中可真熱鬧,春花似錦贵少、人聲如沸呵俏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽普碎。三九已至,卻和暖如春录平,著一層夾襖步出監(jiān)牢的瞬間麻车,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工斗这, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留动猬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓表箭,卻偏偏與公主長(zhǎng)得像赁咙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子免钻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容