今天在菜鳥上看到一個編程的題目,當時挺感興趣的。倒不是因爲這個程序,而是這個問題
原題是說 輸入一個奇數,然後判斷最少幾個 9 除於該數的結果爲整數。
程序如下:
當然現在說的不是程序本身,而是這裏面的數學,哈哈,本人是學基礎數學的,剛好用到。
再說一下題目,任何一個不是5的奇數都可以被 9.。。。9這種數整除。
實際上這個問題只需要考查除了5之外的奇素數,p,在學 abstract algebra(抽象代數)的時候一定學過Zp,即整數環模掉素數p,
這是一個整環,也是一個有限域,因爲10^n這個數一定是在Zp中的,注意是取模之後在裏面,可以理解爲全體整數按除以p所得的餘數分成了10類,
那麼必定有10^n=10^m方這種情況,這很好想,因爲那裏面總共就p個數,而10^m當,m在動的時候可是很多呀,
所以一定有一個數k such that 10^k = 1, 而這就是意味着 10^k-1==p。搞定啦,
回到爲啥剛纔只用考慮奇素數的問題,這個更好回答,因爲任意一個奇數都可以分解成素數的乘積,比如15=3*5.
if __name__ == '__main__': zi = int(raw_input('輸入一個數字:\n')) n1 = 1 c9 = 1 m9 = 9 sum = 9 while n1 != 0: if sum % zi == 0: n1 = 0 else: m9 *= 10 sum += m9 c9 += 1 print '%d 個 9 可以被 %d 整除 : %d' % (c9,zi,sum) r = sum / zi print '%d / %d = %d' % (sum,zi,r)