水仙花數&素數&質因數分解的C語言實現

來源:互聯網
上載者:User

標籤:

最近,我翻了一下之前的C語言教材,看了三個有意思的小程式,包括:尋找“水仙花數”、判斷某數是否為素數、對一個數進行質因數分解。我想把這三個東西放到一個程式中,便寫下了此文。

 

演算法步驟

1. 尋找“水仙花數”。

“水仙花數”是指一個三位元,其各位元字的立方和等於該數本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。

 

2. 判斷某數是否為素數。

素數是指只能被1和它本身整除的數,判斷一個數是否為素數的方法:用這個數分別去除以2到這個數的平方根,如果能被整除,則表明此數不是素數,反之是素數。

 

3. 對一個數進行質因數分解。

對一個數n進行質因數分解,應先找到一個質數k(從最小的2開始),然後按下述步驟進行:

(1) 如果這個質數恰好等於n,則說明分解質因數的過程已經結束。 

(2) 如果n不等於k,但n能被k整除,則應用n除以k的商作為新的正整數n,重複執行第一步。

(3) 如果n不能被k整除,則用k+1作為k的新值,重複執行第一步。

 

本程式流程

本程式分三步走:第一步,尋找“水仙花數”;第二步,判斷找到的“水仙花數”是否是素數;第三步,如果不是素數,則對這個數進行質因數分解。

 

C程式碼


編譯命令

本程式在Linux下進行編譯,編譯命令為:gcc -g -o AlgorithmStudyAlgorithmStudy.c –lm。

注意,不要忽略了“–lm”,否則編譯時間會報錯,提示找不到“sqrt”。

 

程式運行結果

編譯成功之後,執行“AlgorithmStudy”命令,結果如下:

153是一個水仙花數.

153不是素數.

153=3*3*17

------

370是一個水仙花數.

370不是素數.

370=2*5*37

------

371是一個水仙花數.

371不是素數.

371=7*53

------

407是一個水仙花數.

407不是素數.

407=11*37

------

 

 

---------------------------------------------------

本人公眾號:zhouzxi,請掃描以下二維碼:

 

水仙花數&素數&質因數分解的C語言實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.