閱讀前,建議可以參考Day1:閱讀指南&為何選擇這個題目?
題目:計算機概論X30天
挑戰內容:連續30天紀錄計算機概論、離散數學、演算法、資料結構等課程,還有自己學習程式的心得體悟。
本篇性質:
這是一個被費馬坑了的故事
我記錄了自己用假日一個早上的時間,費馬小定理解決了「23^4800017 除以35餘數是多少?」這個問題
當時我覺得自己真是天才,竟然可以想到如此精妙的算法
23^6 ≡1 mod 7  //根據費馬小定理
23^4 ≡1 mod 5  //根據費馬小定理
23^12 ≡1 mod 7  //同餘的相乘性質的次方性質
23^12 ≡1 mod 5  //同餘的相乘性質的次方性質
6X23^12 ≡6X1 mod 7  //這個轉換很精妙,請自行體悟一下
6X23^12 ≡6X1 mod 5  //這個轉換很精妙,請自行體悟一下
6X23^12 ≡-1 mod 7
6X23^12 ≡ 1 mod 5 
7|6X23^12+1 // 同餘的因數定理
5|6X23^12-1  //同餘的因數定理
35|(6X23^12+1)(6X23^12-1)
35|(6^2X23^24)-1
6^2X23^24 ≡ 1 mod 35 //同餘的因數定理
36 X 23^24 ≡1 mod 35 
23^24 ≡1 mod 35  //因為 36 ≡1 mod 35 因此可以消掉
23^4800017  ≡ (23^24)2000000 X 23^17   mod 35
23^17  mod 35  //因為 23^24 ≡1 mod 35 因此(23^24)2000000 可以消掉
太好了,千辛萬苦終於把23^4800017  mod 35 變成 23^17  mod 35 這個較小的問題
23^17 mod 35 
23^2 ≡  4  mod 35  //這條要自己算
(23^2)8 X 23  ≡  4^8 X 23  mod 35 
4^4 ≡  11  mod 35 //這條要自己算
4^8 X 23   ≡ 11^2 X23 mod 35 
11^2 X23 ≡ 18 mod 35 
但是當我認識歐拉定理
我覺得....幹!!費馬小定理根本難用到爆炸
以下是歐拉定理的解法
因為23和35互質,23^φ(35)≡1 (mod35)
φ(35)=24
因此23^24≡1  (mod35)
23^4800017  ≡ (23^24)2000000 X 23^17   mod 35
23^17   mod 35
23^2 ≡  4  mod 35  //這條要自己算
(23^2)8 X 23  ≡  4^8 X 23  mod 35 
4^4 ≡  11  mod 35 //這條要自己算
4^8 X 23   ≡ 11^2 X23 mod 35 
11^2 X23 ≡ 18 mod 35 
整整少了14行!!!!!!
知識就是力量,使用好的知識工具處理問題,效率永遠是不知道的好幾倍