韓信點兵(中國剩餘定理)

2022-08-14 23:54:09 字數 1486 閱讀 4811

中國剩餘定理是數論中的乙個關於一元線性同餘方程組的定理,說明了一元線性同餘方程組有解的準則以及求解方法。又稱為孫子定理,「韓信點兵」「求一術」「鬼谷算」「隔牆算」「剪管術」「秦王暗點兵」「物不知數」等名稱。

例如:物不知數原文:

有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。問物幾何?

宋朝數學家秦九韶對「物不知數」問題作出了完整系統的解答。還被別人編成了《孫子歌決》:

三人同行七十希,五樹梅花廿一支,七子團圓正半月,除百零五使得知

這個歌訣給出了模數為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有解,並且通解可用如下方式構造得到:

例子:使用中國剩餘定理求解上面的「物不知數」便可以理解《孫子歌訣》中的含義。這裡的線性同餘方程組是:

程式實現:

package

crt;

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...