「大衍求一术编程java」大衍算法

博主:adminadmin 2023-03-20 18:58:10 341

今天给各位分享大衍求一术编程java的知识,其中也会对大衍算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

大衍求一术中70,21,15怎么找出来的

优质解答

这个要从韩信说起,韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝的建立了卓绝的功劳.据说韩信的数学水平也非常高超,他在点兵的时候,为了保住军事机密,不让敌人知道自己部队的实力,先令士兵从1至3报数,然后记下最后一个士兵所报之数;再令士兵从1至5报数,也记下最后一个士兵所报之数;最后令士兵从1至7报数,又记下最后一个士兵所报之数;这样,他很快就算出了自己部队士兵的总人数,而敌人则始终无法弄清他的部队究竟有多少名士兵.

这个故事中所说的韩信点兵的计算方法,就是现在被称为“中国剩余定理”的一次同余式解法.它是中国古代数学家的一项重大创造,在世界数学史上具有重要的地位.

最早提出并记叙这个数学问题的,是南北朝时期的数学著作《孙子算经》中的“物不知数”题目.这道“物不知数”的题目是这样的:

“今有一些物不知其数量.如果三个三个地去数它,则最后还剩二个;如果五个五个地去数它,则最后还剩三个;如果七个七个地去数它,则最后也剩二个.问:这些物一共有多少?”

用简练的数学语言来表述就是:求这样一个数,使它被3除余2,被5除余3,被7除余2.《孙子算经》给出了这道题目的解法和答案,用算式表示即为:

用现代的数学术语来说,这幅“开方作法本源图”实际上是一个指数为正整数的二项式定理系数表.稍懂代数的读者都知道:

《孙子算经》实际上是给出了这类一次同余式组

其中70、21、15和105这四个数是关键,所以后来的数学家把这种解法编成了如下的一首诗歌以便于记诵:

“三人同行七十(70)稀,

五树梅花二一(21)枝.

七子团圆正半月(15),

除百零五(105)便得知.”

《孙子算经》的“物不知数”题虽然开创了一次同余式研究的先河,但由于题目比较简单,甚至用试猜的方法也能求得,所以尚没有上升到一套完整的计算程序和理论的高度.真正从完整的计算程序和理论上解决这个问题的,是南宋时期的数学家秦九韶.秦

九韶在他的《数书九章》(见图1一7一1)中提出了一个数学方法“大衍求一术”,系统地论述了一次同余式组解法的基本原理和一般程序.

秦九韶为什么要把他的这一套计算程序和基本原理称为“大衍求一术”呢?这是因为其计算程序的核心问题是要“求一”.所谓“求一”,通俗他说,就是求“一个数的多少倍除以另一个数,所得的余数为一”.那么为什么要“求一”呢?我们可以从“物不知数”题的几个关键数字70、21、15中找到如下的规律

其中70是5和7的倍数,但被3除余1;21是3和7的倍数,但被5除余1;15是3和5的倍数,但被7除余1,任何一个一次同余式组,只要根据这个规律求出那几个关键数字,那么这个一次同余式组就不难解出了.为此,秦九韶提出了乘率、定数、衍母、衍数等一系列数学概念,并详细叙述了“大衍求一术”的完整过程.(由于解法过于繁细,我们在这里就不展开叙述了,有兴趣的读者可进一步参阅有关书籍.)直到此时,由《孙子算经》“物不知数”题开创的一次同余式问题,才真正得到了一个普遍的解法,才真正上升到了

“中国剩余定理”的高度.

从《孙子算经》到秦九韶《数书九章》对一次同余式问题的研究成果,在19世纪中期开始受到西方数学界的重视.1852年,英国传教士伟烈亚力向欧洲介绍了《孙子算经》的“物不知数”题和秦九韶的“大衍求一术”;1876年,德国人马蒂生指出,中国的这一解法与西方19世纪高斯《算术探究》中关于一次同余式组的解法完全一致.从此,中国古代数学的这一创造逐渐受到世界学者的瞩目,并在西方数学史著作中正式被称为“中国剩余定理”.

韩信点兵的方法

韩信点兵

作者:jianhao

汉高祖刘邦曾问大将韩信:“你看我能带多少兵?”韩信斜了刘邦一眼说:“你顶多能带十万兵吧!”汉高祖心中有三分不悦,心想:你竟敢小看我!“那你呢?”韩信傲气十足地说:“我呀,当然是多多益善啰!”刘邦心中又添了三分不高兴,勉强说:“将军如此大才,我很佩服。现在,我有一个小小的问题向将军请教,凭将军的大才,答起来一定不费吹灰之力的。”韩信满不在乎地说:“可以可以。”刘邦狡黠地一笑,传令叫来一小队士兵隔墙站队,刘邦发令:“每三人站成一排。”队站好后,小队长进来报告:“最后一排只有二人。”“刘邦又传令:“每五人站成一排。”小队长报告:“最后一排只有三人。”刘邦再传令:“每七人站成一排。”小队长报告:“最后一排只有二人。”刘邦转脸问韩信:“敢问将军,这队士兵有多少人?”韩信脱口而出:“二十三人。”刘邦大惊,心中的不快已增至十分,心想:“此人本事太大,我得想法找个岔子把他杀掉,免生后患。”一面则佯装笑脸夸了几句,并问:“你是怎样算的?”韩信说:“臣幼得黄石公传授《孙子算经》,这孙子乃鬼谷子的弟子,算经中载有此题之算法,口诀是:

三人同行七十稀,

五树梅花开一枝,

七子团圆正月半,

除百零五便得知。”

刘邦出的这道题,可用现代语言这样表述:

“一个正整数,被3除时余2,被5除时余3,被7除时余2,如果这数不超过100,求这个数。”

《孙子算经》中给出这类问题的解法:“三三数之剩二,则置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十;并之得二百三十三,以二百一十减之,即得。凡三三数之剩一,则置七十;五五数之剩一,则置二十一;七七数之剩一,则置十五,一百六以上,以一百五减之,即得。”用现代语言说明这个解法就是:

首先找出能被5与7整除而被3除余1的数70,被3与7整除而被5除余1的数21,被3与5整除而被7除余1的数15。

所求数被3除余2,则取数70×2=140,140是被5与7整除而被3除余2的数。

所求数被5除余3,则取数21×3=63,63是被3与7整除而被5除余3的数。

所求数被7除余2,则取数15×2=30,30是被3与5整除而被7除余2的数。

又,140+63+30=233,由于63与30都能被3整除,故233与140这两数被3除的余数相同,都是余2,同理233与63这两数被5除的余数相同,都是3,233与30被7除的余数相同,都是2。所以233是满足题目要求的一个数。

而3、5、7的最小公倍数是105,故233加减105的整数倍后被3、5、7除的余数不会变,从而所得的数都能满足题目的要求。由于所求仅是一小队士兵的人数,这意味着人数不超过100,所以用233减去105的2倍得23即是所求。

这个算法在我国有许多名称,如“韩信点兵”,“鬼谷算”,“隔墙算”,“剪管术”,“神奇妙算”等等,题目与解法都载于我国古代重要的数学著作《孙子算经》中。一般认为这是三国或晋时的著作,比刘邦生活的年代要晚近五百年,算法口诀诗则载于明朝程大位的《算法统宗》,诗中数字隐含的口诀前面已经解释了。宋朝的数学家秦九韶把这个问题推广,并把解法称之为“大衍求一术”,这个解法传到西方后,被称为“孙子定理”或“中国剩余定理”。而韩信,则终于被刘邦的妻子吕后诛杀于未央宫。

请你试一试,用刚才的方法解下面这题:

一个数在200与400之间,它被3除余2,被7除余3,被8除余5,求该数。

(解:112×2+120×3+105×5+168k,取k=-5得该数为269。)

什么叫做“韩信点兵”?

韩信点兵是一个有趣的猜数游戏。如果你随便拿一把蚕豆(数目约在100粒左右),先3粒3粒地数,直到不满3粒时,把余数记下来;第二次再5粒5粒地数,最后把余数记下来;第三次是7粒一数,把余数记下来。然后根据每次的余数,就可以知道你原来拿了多少粒蚕豆了。不信的话,你还可以实地试验一下。例如,假如3粒一数余1粒,5粒一数余2粒,7粒一数余2粒,那么,原有蚕豆有多少粒呢?

这类题目看起来是很难计算的,可是我国有时候却流传着一种算法,综的名称也很多,宋朝周密叫它“鬼谷算”,又名“隔墙算”;杨辉叫它“剪管术”;而比较通行的名称是“韩信点兵”。最初记述这类算法的是一本名叫《孙子算经》的书,后来在宋朝经过数学家秦九韶的推广,又发现了一种算法,叫做“大衍求一术”。这在数学史上是极有名的问题,外国人一般把它称为“中国剩余定理”。至于它的算法,在《孙子算经》上就已经有了说明,而且后来还流传着这么一道歌诀:

三人同行七十稀,

五树梅花廿一枝,

七子团圆正半月,

除百零五便得知。

这就是韩信点兵的计算方法,它的意思是:凡是用3个一数剩下的余数,将它用70去乘(因为70是5与7的倍数,而又是以3去除余1的数);5个一数剩下的余数,将它用21去乘(因为21是3与7的倍数,又是以5去除余1的数);7个一数剩下的余数,将它用15去乘(因为15是3与5的倍数,又是以7去除余1的数),将这些数加起来,若超过105,就减掉105,如果剩下来的数目还是比105大,就再减去105,直到得数比105小为止。这样,所得的数就是原来的数了。根据这个道理,你可以很容易地把前面的五个题目列成算式:

1×70+2×21+2×15-105

=142-105

=37

因此,你可以知道,原来这一堆蚕豆有37粒。

1900年,德国大数学家大卫·希尔伯特归纳了当时世界上尚未解决的最困难的23个难题。后来,其中的第十问题在70年代被解决了,这是近代数学的五个重大成就。据证明人说,在解决问题的过程中,他是受到了“中国剩余定理”的启发的。

秦九昭的 大衍求一术 是怎么回事

大衍求一术

中国古代求解一类大衍问题的方法。大衍问题源于《孙子算经》中的“物不知数”问题:“今有物,不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”这是属于现代数论中求解一次同余式方程组问题。宋代数学家秦九韶在《数书九章》(1247年成书)中对此类问题的解法作了系统的论述,并称之为大衍求一术。德国数学家C.F.高斯是在1801年才建立起同余理论的,大衍求一术反映了中国古代数学的高度成就。 秦九韶在《数书九章》中明确地系统地叙述了求解一次同余组的一般计算步骤。秦的方法,正是前述的剩余定理。我们知道,剩余定理把一般的一

的一组数Ki的选定。秦九韶给这些数起名叫“乘率”,并且在《数书九章》卷一“大衍总术”中详载了计算乘率的方法——“大衍求一术”。

为了介绍“大衍求一术”,我们以任一乘率ki的计算作例。如果Gi=

Gi≡gi(modai),

于是kiGi≡Kigi(modai),

但是因为kiGi≡1(modai),

所以问题归结为求ki使适合kigi≡1(modai)。秦九韶把ai叫“定数”,gi叫“奇数”,他的“大衍求一术”,用现代语言解释,实际就是把奇数gi和定数ai辗转相除,相继得商数q1、q2、……qn和余数r1、r2、……rn,在辗转相除的时候,随即算出下面右列的c值:

秦九韶指出,当rn=1而n是偶数的时候,最后得到的cn就是所求乘率ki。如果r1=1而n是奇数,那么把rn-1和rn相除,形式上令qn+1=rn-1-1,那么余数rn+1仍旧是1,再作cn+1=qn+1Cn+Cn-1,这时n+1是偶数,cn+1就是所求的ki。不论哪种情形,最后一步都出现余数1,整个计算到此终止,秦九韶因此把他的方法叫做“求一术”(至于“大衍”的意思,秦九韶本人在《数书九章》序中把它和《周易》“大衍之数”相附会)。可以证明,秦九韶这一算法是完全正确,十分严密的式。

在秦九韶那个时代,计算仍然使用算筹。秦九韶在一个小方盘上,右上布置奇数g,右下布置定数a,左上置1(他叫它做“天元1”),然后在右行上下交互以少除多,所得商数和左上(或下)相乘并入左下(或上),直到右上方出现1为止。下页就是秦九韶的一般筹算图式,右边是一个数字例子(g=20,a=27,K= c4=23)。

秦九韶在《数书九章》中采集了大量例题,如“古历会积”、“积尺寻源”、“推计土功”、“程行计地”等等,广泛应用大衍求一术来解决历法、工程、赋役和军旅等实际问题。在这些实际问题中,模数ai并不总是两两互素的整数。秦九韶区分了“元数”(ai是整数)、“收数”(ai是小数)、“通数”(ai是分数)等不同情形,并且对每种情形给出了处理方法。“大衍总术”把“收数”和“通数”化成“元数”的情形来计算,而对于元数不两两互素的情形,给出了可靠的程序,适当选取那些元数的因子作定数而把问题归结为两两互素的情形①。所有这些系统的理论,周密的考虑,即使以今天的眼光看来也很不简单,充分显示了秦九韶高超的数学水平和计算技巧。

秦九韶小时曾跟随他父亲到南宋京城杭州,向太史局(主管天

天元

奇gi

1,20

定ai

27

1,

gi

1,20

c1=q1,

r2

1,7

(q1)

(q2)

c2=c1q2+1,

r2

3,6

c1,

r1

1,7

cn-2,

rn-2

3,6

cn-1=cn-2qn-1+cn-3,

rn-1

4,1

(qn-1)

(qn)

cn=cn-1qn+cn-2,

1

23,1

cn-1,

rn-1

4,1

文历法的机构)的官员学习天文历法,“大衍求一术”很可能就是他总结天文历法计算上元积年方法的结果。但是“大衍求一术”似乎没有为他同时代的人所充分理解。明中叶以后几乎失传。一直到清代,“大衍求一术”又重新被发掘出来,引起了许多学者(张敦仁、李锐、骆腾凤、黄宗宪等)的兴趣。他们对“大衍求一术”进行了解释、改进和简化,其中黄宗宪《求一术通解》对模数非两两互素的情形给出了更加简明的方法,但是时代已是晚清。

从《孙子算经》“物不知数”题到秦九韶的“大衍求一术”,我国古代数学家对一次同余式的研究,不仅在中国数学史上而且在世界数学史上占有光荣的地位。在欧洲,最早接触一次同余式的,是和秦九韶同时代的意大利数学家裴波那契(1170—1250),他在《算法之书》中给出了两个一次同余问题,但是没有一般的算法。这两个问题从形式到数据都和孙子物不知数题相仿,整个水平没有超过《孙子算经》。直到十八、十九世纪,大数学家欧拉(1707—1783)于公元1743年、高斯(1777—1855)于公元1801年对一般一次同余式进行了详细研究,才重新获得和秦九韶“大衍求一术”相同的定理,并且对模数两两互素的情形给出了严格证明。欧拉和高斯事先并不知道中国人的工作。公元1852年英国传教士伟烈亚力(1815—1887)发表《中国科学摘记》,介绍了《孙子算经》物不知数题和秦九韶的解法,引起了欧洲学者的重视。1876年,德国马蒂生(1830—1906)首先指出孙子问题的解法和高斯方法一致,当时德国著名数学史家康托(1829—1920)看到马蒂生的文章以后,高度评价了“大衍术”,并且称赞发现这一方法的中国数学家是“最幸运的天才”。直到今天,“大衍求一术”仍然引起西方数学史家浓厚的研究兴趣。如1973年,美国出版的一部数学史专著《十三世纪的中国数学》中,系统介绍了中国学者在一次同余论方面的成就,作者力勃雷希(比利时人)在评论秦九韶的贡献的时候说道:“秦九韶在不定分析方面的著作时代颇早,考虑到这一点,我们就会看到,萨顿②称秦九韶为‘他那个民族、他那个时代、并且确实也是所有时代最伟大的数学家之一’,是毫不夸张的。”

有一类自然数,除以11余5,除以13余6,除以17余8,除以19余9.求其中最小的一个自然数

看了好久的书才来做这个题,中国古代有一种算法叫做“大衍求一术”,简单点儿解释就是:求一个数N,使得它被A1除余r1,被A2除余r2,被A3除余r3,被A4除余r4……。写成代数式就是:N=A1q1+r1=A2q2+r2=A3q3+r3=A4q4+r4=……那么“大衍求一术”要求我们首先找到一个数M1,它除以A1余1,而同时又被B1=A2×A3×A4整除;再找一个数M2,它除以A2余1,而同时又被B2=A1×A3×A4整除;再找一个数M3,它除以A3余1,而同时又被B3=A1×A2×A4整除;再找一个数M4,它除以A4余1,而同时又被B4=A1×A2×A3整除;如此等等。以上一系列“求一”的过程,相当于解一系列不定方程:BiX+AiY=1,(i=1,2,3,4……)。那么,当A1,A2,A3,A4互质的时候,利用辗转相除法,可以求得上面不定方程的解Xi(i=1,2,3,4……)。于是,若令Mi=BiXi,那么M1r1+M2r2+M3r3+M4r4就是一个被A1除余r1,被A2除余r2,被A3除余r3,被A4除余r4的数,它加上或减去A1×A2×A3×A4依然具有同样性质。

现在利用上述性质做这道题:

先求被11除余1且被13×17×19=4199整除的数。用辗转相除法:4199-11×381=8;11-8=3;8-3×2=2;3-2=1;所以1=3-2=3-(8-3×2)=3×3-8=(11-8)×3-8=11×3-8×4=11×3-(4199-11×381)×4=-4199×4+11×1527,所以求得M1=-4199×4=-16796。用同样方法,还可求得M2=-10659,M3=-16302,M4=-2431。题中r1=5,r2=6,r3=8,r4=9,从而M1r1+M2r2+M3r3+M4r4=-300229,注意到11×13×17×19=46189,所以被11除余5,被13除余6,被17除余8,被19除余9的最小自然数是-300229+46189×7=23094。

如果楼主不明白什么是辗转相除法,自己去找点资料看看吧,很容易理解的。

终于做完了,打了好久字的说,呵呵,打完收工!

大衍求一术是谁解出的?

宋朝数学家秦九韶的求解一次同余式的“大衍求一术”,是数学史上的一项卓越成就。联立一次同余式问题最早见于《孙子算经》中的一个问题:“今有数不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”这就是著名的孙子问题。他的解法要用到求三个一次同余式的共同解。秦九韶在《数书九章》中首次对这一算法进行介绍,并把它推广到解决各种数学问题中去。他系统地提出求解一次同余组的一般计算步骤,正确而又严密。过了500年后,欧洲的尤拉(1707~1789年)和高斯(1777~1855年)等人对联立一次同余式问题才进行了深人的研究。

大衍求一术是啥玩意啊

大衍求一术,又名求一术。通常被用来泛指南宋数学家秦九韶发明的求解一次同余式组的算法。

详细的说明参见下面的链接:

大衍求一术编程java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于大衍算法、大衍求一术编程java的信息别忘了在本站进行查找喔。