有關餘數的簡單方法,不知道是新發現還是已知?

今天做題時發現總結的規律,,不知道之前有沒有,也不知道是否完全正確。請大家看一下,,,,一個數同時滿足,除a余c,除b余d.(其中a,b,c,d為正整數且a&d)那麼這個數的最小值為(c-d)(b-a)×a+c


反例:
a=4 c=3 b=7 d=2
滿足條件的最小正整數是23
23/4=5...3
23/7=3...2
而(c-d)(b-a)a+c=15

其實是這樣的,如果真的(c-d)(b-a)a+c要滿足你說的這個條件
顯然這個數除以a確實余c(因為它已經被寫成了ka+c的形式了嘛)
但是如果它要除以b余d,注意到
(c-d)(b-a)a+c=(c-d)ab-(c-d)a^2+c,第一項顯然是b的倍數
所以-(c-d)a^2+c要除以b余d,也就是說-(c-d)a^2+c-d得是b的倍數
這個式子可以重新寫成-(a^2-1)(c-d)=-(a+1)(a-1)(c-d)
我猜測題主在一開始嘗試的時候,所選擇的b都是a+1,這個時候-(a+1)(a-1)(c-d)顯然是b的倍數,但是只要b不是a+1,就不能保證這個數是b的倍數了(比如上例)。即使是,也未必能保證這是最小值。

如果題主對這類問題感興趣,可以自行去了解下「中國剩餘定理」。


孫子算經一千多年前就研究清楚了的問題,你還得到了一個錯誤的答案,這是多麼令人悲哀的事情……
a和b互質的時候,這個問題對於任意的c和d都有解。對於二元的問題來說,解決的關鍵是找到A和B兩個數,使得:
aA equiv 1 pmod b
bB equiv 1 pmod a
等效來說是要找到aA + bB = 1的不定方程的解,這可以通過擴展的歐幾里得輾轉相除法得到。
找到之後我們有:
daA equiv d pmod {b}
cbB equiv c pmod {a}
那麼daA + cbB就是一個滿足條件的解,由於任意兩個解的差都同時是a和b的倍數(因為差的餘數等於餘數的差,所以差的餘數是0),所以通解是
daA + cbB + kab
在你要的c > d的情況下,根據aA + bB = 1,最小的結果可以寫為
d + b((c-d)B mod a)
或者
c + a( - (c-d)A) mod ab
你的式子要求A = a,所以確切的來說等於你的結果成立的條件是b|(a^2-1),也就是b|a-1b|a+1。對於比較小的a和b的確有可能偶然成立了,尤其因為6這個數,你選a=5、a=7都會撞到它,但這顯然不是總是成立的……

a和b不互質的情況留給讀者自行思考


初等數論里就別想著能有不trivial的新發現了,問是不是幾百年來沒一個人有過同樣的思考簡直在不自量力
如果想問這個方法對不對,就沒必要加問是不是新發現這句話。做個比喻,就好像一個小孩去農村走了一圈,發現了一塊沒有人的田野,上知乎問自己是不是第一個發現了那塊土地的人。
這不是不鼓勵新思想,就像大家不是不鼓勵民科繼續研究哥德巴赫猜想一樣,畢竟又沒偷沒搶學個數學有什麼好不鼓勵呢?


孫子定理對這種問題表述的比較清楚了,本質上是Z/nZ的直和分解。


秦王暗點兵,大衍求一術。


厲害啊,我只記得有個數論倒數的。。。。。。。。


推薦閱讀:

初級程序員,該如何提高?
理論上可以通過除窮舉法以外的方法破解不可逆的加密演算法嗎?
毒酒迷題:現有 1024 瓶美酒,其中 2 瓶有毒。毒藥 24 小時內發作,現有 65 名死囚,怎樣能在 24 小時 01 分內找出 2 瓶毒酒?
x,y是正實數,解方程x^6-y^6=2016xy^2?
階乘函數n!推廣到連續情形是gamma函數,那麼為什麼特別要這樣定義:Γ(n+1)=n! 呢 ?

TAG:演算法 | 數學 | 趣味數學 |