标题: 给大家介绍一个速算法
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4717
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2010-7-29 11:05 资料 主页 文集 短消息 只看该作者
借地科普,中国剩余定理。
某数 x,除以两两互质的一组数 m1, m2, ..., mn,余数分别为 a1, a2, ..., an,求x。

为了求 x,需要引入一组数 b1, b2, ..., bn,满足以下条件:
① 当 i ≠ j 时,bi ≡ 0 (mod mj)
② 当 i = j 时,bi ≡ 1 (mod mj)
此时 x 可以容易的给出:
③ x ≡ a1b1+ a2b2+ ... + anbn (mod ∏mi)
或者
③ x = a1b1+ a2b2+ ... + anbn + k∏mi,其中 k 可以取任意整数。

那么如何求 bi 呢,请看下面这个例子。
三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百零五便得知。
在这个例子中,a1 = 3,a2 = 5, a3 = 7,b1 = 70,b2 = 21,b3 = 15。由此得知,bi 一定是除了 ai 外其余所有 a 值乘积的倍数。

令 ri = m1m2...m[i-1]m[i+1]...mn,则必有 ri 和 mi 互质,方程 ciri + dimi = 1 一定有整数解。然后令 bi = ciri,则 bi 必定满足上述①②两式。

问题至此,转化为已知互质的 r 和 m,如何求方程 cr + dm = 1的整数解。此时可用欧几里德扩展算法。

欧几里德定理,也叫辗转相除法,可用于计算两个正整数,r 和 m 的最大公约数 gcd(r, m)。此处gcd(r, m) = 1。
欧几里德扩展算法,在计算最大公约数的每一步记录系数,得到由 r 和 m 组合出 gcd(r, m) 的线性组合系数。即在等式 cr + dm = gcd(r, m) 中,不但求出 gcd(r, m),还求出了 c 和 d。

例如,r = 23,m = 120
23*0 + 120*1 = 120
23*1 + 120*0 = 23
23*(-5) + 120*1 = 5
23*21 + 120*(-4) = 3
23*(-26) + 120*5 = 2
23*47 + 120*(-9) = 1
至此完成,得到 c = 47,d = -9。

此处 bi = ci*ri = 1081,然后逐次求出所有 bi,再根据③式即可求出 x 。


顶部
性别:女-离线 颖颖
(司徒家的颖颖)


Rank: 12Rank: 12Rank: 12
组别 限制发言用户
级别 大将军
好贴 3
功绩 95
帖子 11332
编号 90594
注册 2006-11-9
来自 系统复制中心


发表于 2010-7-29 12:21 资料 短消息 只看该作者
回复 #32 周瑜 的帖子

大家这下也可以看出,虽然我的方法的原理用到了中国剩余定理,但运算简捷性方面我是做了很大的改善的。


顶部
性别:男-离线 悼红狐

白衣伯爵光禄大夫

Rank: 17Rank: 17
轩辕春秋年度最佳(春秋文艺区)
组别 翰林学士
级别 卫将军
好贴 10
功绩 407
帖子 6098
编号 118
注册 2003-8-24
来自 悼红轩


发表于 2010-7-29 23:18 资料 主页 文集 短消息 只看该作者
我突然想起周易算卦,算卦首先要准备五十根蓍草,也可以用五十个物品替代,比如五十根火柴棍之类的。之所以要五十,因为五十是大衍之数。什么叫大衍之数呢?就是1+3+5+7+9=25,2+4+6+8+10=30,奇数是阳数也就是天数,偶数是阴数也就是地数,阴阳相合是为大衍。两者相加得五十五。嗯。。这说明周易上写错了,大衍之数五十五,他漏写了一个五,变成大衍之数五十。

为了表示天之道损有余而补不足,因此去掉一根,剩余四十九根。接下来随机分成两堆,这代表了太极而成两仪。也有说法是,拿开一根是拿开人,因为接下来的事是天地大事,人就不要掺和了。

分出来之后,随机从一堆中拿出一根,是为天地生人,此时的人是天地运数中的,跟之前那个不一样。这样周易的三才(天地人)就出现了。

接下来,把一堆中的蓍草的数目除以四,把余数拿开,如果整除,则拿开四根蓍草。另外一堆重复这个运算。于是两仪成四象。

接下来,把两堆的余数还有分出来的那一个人并起来,得到一个数。至此“一变”结束。

把剩余的蓍草混合,重复上面的过程,叫“二变”。
把二变后的剩余数混合,重复过程,叫“三变”。

三变都完成后剩余蓍草的数目除以四,其余数为一个卦的一爻。

大家知道,六十四卦由八卦垒起来而成,所以一卦有六条爻组成。每一爻三变出数,则得到一卦就需要“十八变”,女大十八变,变出来就成了卦了,之后按图索骥,找到卦即可。余数必然只会是6、7、8、9四个,6、8为偶代表阴爻,7、9为奇代表阳爻。具体地说6是老阴,7是少阳,8是少阴,9是老阳。根据老变少不变的规则,原卦就会变卦(又出一个熟悉的名词啊~~)

随机分开,任意一堆蓍草数为一根(m1),两根(m2),三根(m3)和四根(m4),以其值为余数(ri),讲四哥余数乘以固有的用数(Xim1m2……mi-1mi-2……mk),将值相加。将所加得之和除以衍母之和十二(m1m2m3m4)的最小公倍数,这个数值的商和余数便是上面讲到的最后一部出现6、7、8、9。

那么这个运算是啥米呢?即
当整数m1m2m3m4……mi每两个互为要素,r1r2……ri为任意整数时,
X≡r1(modm1)≡r2(modm2)≡……≡ri(modmi)
满足上式的解是Xim1m2……mi-1mi-2……mk≡1(modmi)
对于这个解中的X1X2……Xi该解法解为:
X≡x1m2m3……mkr1+x2m1m3……mkr2+……+Xim1……mi-1mi+1……mkri+
……+xkm1m2……mk-1rk(modm1m2)……mk
顶部
性别:男-离线 Liongareth
(宋武刘裕)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 11
帖子 1134
编号 86953
注册 2006-10-11


发表于 2010-7-30 11:07 资料 文集 短消息 只看该作者
两位数乘两位数,心算一念间的我飘过。
顶部
性别:未知-离线 toushion

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 前将军
功绩 18
帖子 1757
编号 77945
注册 2006-8-4
家族 云水兰若


发表于 2010-8-29 14:59 资料 文集 短消息 只看该作者
这数学是真废了,这个剩余定理看了好久了也没弄明白那个B到底是如何计算的
顶部
性别:未知-离线 benchenben

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 40
编号 60243
注册 2006-2-17


发表于 2010-8-29 15:48 资料 短消息 只看该作者
心算能力太差,算得好痛苦
顶部
性别:未知-离线 小贩
(仙子!请自重……)

Rank: 16
组别 羽林都尉
级别 大将军
功绩 54
帖子 12307
编号 29483
注册 2005-1-3
来自 Watchmen-德玛西亚


把珠算口訣背了,再弄个心盘。也多背不了多少东西。
顶部
性别:男-离线 楊延朗
(四狼)

★★

Rank: 10Rank: 10Rank: 10Rank: 10
组别 羽林都尉
级别 安东将军
功绩 52
帖子 3234
编号 394061
注册 2010-8-31
来自 广东肇庆


发表于 2010-9-5 22:15 资料 个人空间 短消息 只看该作者
貌似麻烦了点,要是两个十位数相乘的话应该心算还比较容易吧~
顶部
性别:未知-离线 KYOKO
(★御姐控★)

唐国公
荆南节度使
★★

Rank: 22Rank: 22Rank: 22Rank: 22
柱国(正二品)
组别 节度使
级别 大将军
功绩 1457
帖子 65672
编号 32
注册 2003-8-19
来自 BWL


发表于 2010-9-5 23:39 资料 个人空间 短消息 只看该作者
LZ能不能心算十进制转换成十六进制?
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-8-17 02:47
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.010651 second(s), 8 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP