累進可除數(英:Polydivisible number)是有以下特質的整數:首個位非零,而且由它首n個位組成的數是n的倍數。
基本介紹
- 中文名:累進可除數
- 外文名:Polydivisible number
- 特點1:首個位非零
- 特點2:由它首n個位組成的數是n的倍數
簡介,C語言實例 九位累進可除數,
簡介
例如345654:
1|3
2|34
3|345
4|3456
而123456就非累進可除數,因為1234不是4的倍數。
累進可除數可以在不同的進位制中定義。本條目僅談論十進制中的情況。
背景
累進可除數是趣味數學上的一道名題的一般化:
用1至9排列成一個數,使其首2個位能被2除盡,首3個位能被3除盡,如此類推,整個數是9的倍數。
雖然9位的累進可除數有2492個,但唯一一個包含1至9的數字而不重覆的只有一個,是381 654 729。
C語言實例 九位累進可除數
求九位累進可除數。所謂九位累進可除數就是這樣一個數:這個數用到1到9這九個數字組成,每個數字剛好只出現一次。這九個位數的前兩位能被2整除,前三位能被3整除......前N位能被N整除,整個九位數能被9整除。
*問題分析與算法設計
問題本身可以簡化為一個窮舉問題:只要窮舉每位數字的各種可能取值,按照題目的要求對窮舉的結果進行判斷就一定可以得到正確的結果。
問題中給出了“累進可除”這一條件,就使得我們可以在窮舉法中加入條件判斷。在窮舉的過程中,當確定部分位的值後,馬上就判斷產生的該部分是否符合“累進可除”條件,若符合,則繼續窮舉下一位數字;否則剛剛產生的那一位數字就是錯誤的。這樣將條件判斷引入到窮舉法之中,可以儘可能早的發現矛盾,儘早地放棄不必要窮舉的值,從而提高程式的執行效率。
為了達到早期發現矛盾的目的,不能採用多重循環的方法實行窮舉,那樣編出的程式質量較差。程式中使用的算法不再是窮舉法,而是回朔法。
求N位累進可除數。用1到9這九個數字組成一個N(3<=N<=9)位數,位數字的組成不限,使得該N位數的前兩位能被2整除,前3位能被3整除,......,前N位能被N整除。求滿足條件的N位數。