如何分解質(zhì)因數(shù)?

題目描述:

將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90 = 2 * 3 * 3 * 5

概念梳理:

什么是質(zhì)數(shù)?

質(zhì)數(shù)(Prime Number),是指在大于1的自然數(shù)中,只能被1它本身整除的自然數(shù)。

如何判斷整除?

給定除數(shù)n和被除數(shù)N,如果N / n的余數(shù)為零,則稱N能被n整除。
在編程中,可用取模運(yùn)算判斷整除問(wèn)題。

什么叫分解質(zhì)因數(shù)?

即將一個(gè)合數(shù)寫成幾個(gè)質(zhì)數(shù)相乘的形式,就叫做分解質(zhì)因數(shù)。

思路分析:

  1. 根據(jù)質(zhì)數(shù)的定義,實(shí)現(xiàn)一個(gè)算法,用于判斷一個(gè)自然數(shù)是不是質(zhì)數(shù);
  2. 找出1~N中所有的質(zhì)數(shù);
  3. 循環(huán)判斷N能否被1~N中的質(zhì)數(shù)整除,如果能被整除,則該質(zhì)數(shù)為N的一個(gè)質(zhì)因數(shù);
  4. 拿到第3步整除后的結(jié)果,重復(fù)執(zhí)行第2、3兩步,直到整除的結(jié)果也是一個(gè)質(zhì)數(shù)為止。

代碼實(shí)現(xiàn):

  1. 判斷一個(gè)數(shù)是否為質(zhì)數(shù)
/**
 * 判斷一個(gè)是否為質(zhì)數(shù)
 * 如果一個(gè)數(shù)n只能被1或n整除,則該數(shù)為質(zhì)數(shù),即:
 * 如果一個(gè)數(shù)n不能被1~n之間的任何數(shù)整除,則該數(shù)為質(zhì)數(shù)。
 */
public boolean isPrimeNumber(int n) {
    for (int i = 2; i < n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}
  1. 遞歸分解質(zhì)因數(shù)
public void factoringNumber(int n) {
    if (isPrimeNumber(n)) {
        System.out.print(n); // 直到n為質(zhì)數(shù),分解質(zhì)因數(shù)完成
        return;
    }
    for (int i = 2; i < n; i++) {
        if (isPrimeNumber(i)) { // i是否為質(zhì)數(shù)
            if (n % i == 0) { // n 能否被i整除
                System.out.print(i + " * ");
                int result = n / i; // 整除后的結(jié)果
                factoringNumber(result); // 遞歸分解質(zhì)因數(shù)
                break; // 注意:找到一個(gè)質(zhì)因數(shù)后即退出循環(huán)
            }
        }
    }
}
  1. 分解質(zhì)因數(shù)測(cè)試
factoringNumber(1001); // 7 * 11 * 13

總結(jié):

解決問(wèn)題,第一步要做的就是弄清除題目中的各個(gè)基本概念。如果基本概念不清楚,是很難正確地思考的。

比如本題中,首先要弄清的就是質(zhì)數(shù)整除、余數(shù)、分解質(zhì)因數(shù)等概念。對(duì)基本概念有了深入的理解后,解決問(wèn)題起來(lái)就如虎添翼了。

題目里有一個(gè)值得注意的地方,就是在找到一個(gè)質(zhì)因數(shù)后,要退出循環(huán),否則會(huì)循環(huán)會(huì)繼續(xù)執(zhí)行。

遇到代碼執(zhí)行結(jié)果與預(yù)期結(jié)果不符時(shí),要冷靜分析,只需要按照代碼邏輯(Debug)在大腦里執(zhí)行一遍即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容