Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49854967
  • 博文数量: 4599
  • 博客积分: 58701
  • 博客等级: 大将
  • 技术积分: 48987
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-22 16:58
个人简介

粵語歌文化歷史研究者,喜歡鑽研文字與音樂的創作,也喜愛數學與棋藝等等。

文章分类

全部博文(4599)

文章存档

2023年(5)

2022年(7)

2021年(10)

2020年(6)

2019年(9)

2018年(44)

2017年(82)

2016年(83)

2015年(118)

2014年(142)

2013年(205)

2012年(273)

2011年(307)

2010年(381)

2009年(429)

2008年(451)

2007年(774)

2006年(1271)

分类:

2008-03-14 08:42:41

 
 
  秦九韶的「大衍求一術」,是初等數論裡同餘式計算裡絕不可少的方法,它比西方的方法簡便得多。這裡,記下筆者以前在書上學習的實際筆算方法,既是替自己備忘,也供有興趣的朋友參考。不過,這裡只是敘述具體算法,證明請恕從略。
 
  設有A和B兩個互素的正整數,如何尋得另一個正整數K,使得A和K相乘後被B除的餘數恰好是1(換一個說法是A乘K減1可被B整除)。「大衍求一術」就是幫助我們迅速尋找出這個K來的。其實,「大衍求一術」也是一種輾轉相除法,但看來更是巧妙神奇。
 
 
例一

求最小的正整數K,使之與23相乘後,被97除的餘數是1

 

具體的「大衍求一術」筆算法:

 

231   231   317    317    138

970   54     54     221    221

1      2      3      4      5

 

  說明:先在第一欄把23寫在上方,並須在其右上角寫上1(這不是指數,我稱作「寄數」),97寫在下方,寄數必須是0。然後兩數中以小的一個作除數,先重覆的連寄數寫在第二欄上,本例裡,23是較小的,以之除97,商數是4,餘數是5,把餘數5寫在第二欄下方,其寄數是4×104(這裡4是剛求得的商數,1和0分別是2397的寄數)。接下來以5作除數去除23,商數是4,餘數是3,所以在第三欄上方寫上3,其寄數是4×4117(這裡的4和1分別是523的寄數)。接下來以3除5,商數是1,餘數是2,所以在第四欄下方寫上餘數2,其寄數是1×17421,接下來,以2除3,商數是1,餘數是1,把餘數1寫在第五欄上方,其寄數是1×211738由於餘數1先在上方出現,算法到此結束,這1的寄數38就是我們所要求的最小整數K。

 

 

例二

求最小的正整數N,使之與97相乘後,被23除的餘數是1

 

具體算法:

 

971   51     51     25     25

230   230   34     34     19     114

1      2      3      4      5      6

 

  說明:先在第一欄把97寫在上方,寄數必須是1,23寫在下方,寄數必須是0,以小數除大數,商數是4,餘數是5,而5的寄數是4×011。接下來以5除23,商數是4,餘數是3,寄數是4×104。接下來以3除5,商數是1,餘數是2,寄數是1×415。接下來以2除3,商數是1,餘數是1,寄數是1×549由於餘數1先在下方出現,按大衍求一術的規定,必須多算一步,(在第5欄裡)以下方的1除上方的2,商數是1,餘數是1,寄數是1×9514。於是,14就是我們所求的最小正整數N。

 

 

更多的例子:

 

例三:某數與1989相乘後,被64除餘1。求滿足這題目的最小整數。

 

19891       51     51     113

640           640   412    412

 

按上面的計算,此數為13

 

 

 

例四:某數與64相乘後,被1989除餘1。求滿足這題目的最小整數。

 

641           641   4373  4373

19890       531    531    1404  11585

 

按上面的計算,此數是1585補充說明,由於餘數1首先出現在下方(第四欄),必須多算一步,以1除4,商數是3,餘數是1,寄數是3×4043731585

 

 

例五:某數與1949相乘後,被101除餘1。求滿足這題目的最小整數。

 

19491       301           301   87     87     227    227

1010         1010         113   113   310    310    137    164

 

故所求之數是64

 

 

 

例六:某數與101相乘後,被1949除餘1。求滿足這題目的最小整數。

 

1011         1011         1158  1158  3193  3193  1714

19490       3019          3019  8135  8135  2521  2521

 

故所求之數是714

 

 

  附帶一說,對於一般的一次同餘方程求解,「大衍求一術」亦是不可或缺的。比如下例:

                101Y 97           (mod1949)

這個方程相當於問某數Y101後以1949除之餘數是97,又或是某數Y10197能被1949整除,求出這些Y來。它的一個解法就是先求出哪個最小正整數乘1011能被1949整除,也就是先解同餘方程101K 1 (mod1949),從上面的計算可知這個數是714,所以上述的一次同餘方程的解是:

 

                Y 97×714         (mod1949)

            Y 1043             (mod1949)

驗算,101×104397確能被1949整除,而所有形如10431949t(這裡t1, 2, 3…)的整數亦是這個一次同餘方程的解。

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
阅读(7222) | 评论(54) | 转发(0) |
给主人留下些什么吧!~~

黃志華2009-07-15 07:18:23

回樓上的網友:帖文裡最後的一段,說的正是你詢問的情況,可參考一下。  

黃志華2009-07-15 07:18:23

回樓上的網友:帖文裡最後的一段,說的正是你詢問的情況,可參考一下。  

chinaunix网友2009-07-14 19:06:00

若条件中的余数要求不是1,而是其他正整数,如:2、3……,弱弱问一句:此法通用吗?

chinaunix网友2009-07-14 19:06:00

若条件中的余数要求不是1,而是其他正整数,如:2、3……,弱弱问一句:此法通用吗?

chinaunix网友2009-07-14 19:06:00

若条件中的余数要求不是1,而是其他正整数,如:2、3……,弱弱问一句:此法通用吗?