捷算法与素数
杨辉致力于捷算法的研究,并取得一些成就。例如,《算法通变本末》中记载着一种叫“重乘”的算法,即把乘数分解为若干因数之积的形式, 然后用因数去乘。杨辉说:“乘位繁者,约为二段,作二次乘之,庶几位简而易乘,自可无误也。”例如 38367×23121,杨辉便把 23121 分解为 9
×7×367,然后再乘 38367。
由于捷算法的需要,杨辉注意到一个整数是合数还是素数的问题。他说:“置价钱(即 23121 文)为法,约之。先以九约,又以七约,乃见三百
六十七,更不可约也。”所谓不可约,就是说除了 1 和本身外没有其他约数。显然,杨辉的“不可约”之数即素数。他在这里首次提出素数概念, 又在《法算取用本末》中列出了从 201 到 300 的素数表,共 16 个:
211,223,227,229,233,239,241,251,
257,263,269,271,277,281,283,293。
这实际是 201 到 300 的全部素数。虽然杨辉对素数的研究远在欧几里得之后,理论上也不够完整,但他在没有外来影响的情况下注意到这一重要问题,其思想之深刻是值得称道的。
“求一乘”和“求一除”也是捷算法,是用加减代乘除,通过折、倍等方法来实现的,“求一”就是变首位为 1 的意思。例如 237×56,先倍
56,得112,再折237,即 237 = 118.5,然后用112乘118.5。
2
在运算方面,杨辉特别重视乘法,他说:“夫习算者,以乘法为主。” (《详解九章算法》)认为“乘除者,本勾深致远之法”,“因法不独能乘, 而亦能除”(《算法通变本末》)。例如
2746÷25=27.46×4=109.84,
这种以乘代除的方法不仅施于精确计算,也用于近似计算。例如2746÷1111=0.2746×9=2.4714。
《田亩比类乘除捷法》中的一些题列出了不同的方法,这些方法有繁有简,杨辉的意图就在于比较优劣,提倡捷法。