中國剩餘定理是數論中的乙個關於一元線性同餘方程組的定理,說明了一元線性同餘方程組有解的準則以及求解方法。又稱為孫子定理,「韓信點兵」「求一術」「鬼谷算」「隔牆算」「剪管術」「秦王暗點兵」「物不知數」等名稱。
例如:物不知數原文:
有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。問物幾何?
宋朝數學家秦九韶對「物不知數」問題作出了完整系統的解答。還被別人編成了《孫子歌決》:
三人同行七十希,五樹梅花廿一支,七子團圓正半月,除百零五使得知這個歌訣給出了模數為3,、5、7時候的同餘方程的秦九韶解法。意思是:將除以3的餘數乘以七十,將除以5的餘數乘以21,將除以7的餘數乘以15,全部加起來後除以105,得到的餘數就是答案。比如說「物不知數」中的例子,使用以上的方法計算就得到:
70*2+21*3+15*2 = 233 = 2*105+23答案就是23.
形式描述:用現代數學的語言來說明的話,中國剩餘定理給出了以下的一元線性同餘方程組:
有解的判定條件,並用構造法給出了在有解情況下解的具體形式。
中國剩餘定理說明:假設整數m1、m2、m3…mn 兩兩互質,則對任意的整數:a1、a2、… 、an,方程組s有解,並且通解可用如下方式構造得到:
例子:使用中國剩餘定理求解上面的「物不知數」便可以理解《孫子歌訣》中的含義。這裡的線性同餘方程組是:
程式實現:
packagecrt;
public
class
crt ; //
模數,條件互質
static
int a = ; //
餘數static
int mi = ; //
static
int m = 1;
static
int firstnum = 0;
static
int x = 0;
static
int t = new
int [3];
public
static
void
gettvalue()
t[i] =temp;}}
public
static
void
main(string args)
for(int j =0;j < mi.length;j++)
gettvalue();
for(int k = 0;k < 3 ;k++)
firstnum = x%m;
for(int k = 0;k)
system.out.println(x);
system.out.println(firstnum);}}
韓信點兵(中國剩餘定理)
孫子算經中有記載 今有數不知其數 二三數之餘而,五五之數餘三,七七數之餘而,問物幾何?它的意思就是有一些物品,如果3個3個數 剩兩個,如果5個5個數,最後剩3個,如果7個個7個數,最後剩2個,求這些物品的數量,這個問題稱為孫子問題,西方數學家稱為中國剩餘定理 方法就是除3的餘數a乘上70,除5的餘數...
韓信點兵python演算法 韓信點兵演算法
秦朝末年,楚漢相爭。一次,韓信將1500名將士與楚王大將李鋒交戰。苦戰一場,楚軍不敵,敗退回營,漢軍也死傷四五百人,於是韓信整頓兵馬也返回大本營。當行至一山坡,忽有後軍來報,說有楚軍騎兵追來。只見遠方塵土飛揚,殺聲震天。漢軍本來已十分疲憊,這時隊伍大譁。韓信兵馬到坡頂,見來敵不足五百騎,便急速點兵迎...
韓信點兵演算法
孫子算經 中給出這類問題的解法 三三數之剩二,則置一百四十 五五數之剩三,置六十三 七七數之剩二,置三十 並之得二百三十三,以二百一十減之,即得。凡三三數之剩一,則置七十 五五數之剩一,則置二十一 七七數之剩一,則置十五,一百六以上,以一百五減之,即得。用現代語言說明這個解法就是 首先找出能被5與7...