??xml version="1.0" encoding="utf-8" standalone="yes"?>
位数 [lgN!]+1=lg(N(N-1)...1)+1 = (lgN+lg(N-1)+...+lg1) + 1
]]>
loop:
1. 如果S中元素个Cؓ0或?,q回
2. 取S中Q意元素v为枢U?br />
3. S中余下元素按>v ?<v分成两个不同部分
4. 对这两个部分快速排?br />
枢纽元选择:
一般采用S中v?l束,中间位置的三个值的中gؓ枢纽?(三数中值分割法)
Suppose n1, n2, …, nk are positive integers which are pairwise coprime. Then, for any given integers a1,a2, …, ak, there exists an integer x solving the system of simultaneous congruences
Furthermore, all solutions x to this system are congruent modulo the product N = n1n2…nk.
Hence for all
, if and only if
.
Sometimes, the simultaneous congruences can be solved even if the ni's are not pairwise coprime. A solution x exists if and only if:
All solutions x are then congruent modulo the least common multiple of the ni.
Versions of the Chinese remainder theorem were also known to Brahmagupta (7th century), and appear in Liber Abaci (1202).
This algorithm only treats the situations where the ni's are coprime. The method of successive substitution can often yield solutions to simultaneous congruences, even when the moduli are not pairwise coprime.
Suppose, as above, that a solution is needed to the system of congruences:
Again, to begin, the product is defined. Then a solution x can be found as follows.
For each i the integers ni and N / ni are coprime. Using the extended Euclidean algorithm we can therefore find integers ri and si such that rini + siN / ni = 1. Then, choosing the label ei = siN / ni, the above expression becomes:
Consider ei. The above equation guarantees that its remainder, when divided by ni, must be 1. On the other hand, since it is formed as siN / ni, the presence of N guarantees that it's evenly divisible by any nj so long as .
Because of this, combined with the multiplication rules allowed in congruences, one solution to the system of simultaneous congruences is:
For example, consider the problem of finding an integer x such that
Using the extended Euclidean algorithm for 3 and 4×5 = 20, we find (−13) × 3 + 2 × 20 = 1, i.e. e1 = 40. Using the Euclidean algorithm for 4 and 3×5 = 15, we get (−11) × 4 + 3 × 15 = 1. Hence, e2 = 45. Finally, using the Euclidean algorithm for 5 and 3×4 = 12, we get 5 × 5 + (−2) × 12 = 1, meaning e3 = −24. A solution x is therefore 2 × 40 + 3 × 45 + 1 × (−24) = 191. All other solutions are congruent to 191 modulo 60, (3 × 4 × 5 = 60) which means that they are all congruent to 11 modulo 60.
NOTE: There are multiple implementations of the extended Euclidean algorithm which will yield different sets of e1, e2, and e3. These sets however will produce the same solution i.e. 11 modulo 60.
Dividend | Divisor | Quotient | Remainder |
---|---|---|---|
120 | 23 | 5 | 5 |
23 | 5 | 4 | 3 |
5 | 3 | 1 | 2 |
3 | 2 | 1 | 1 |
2 | 1 | 2 | 0 |
It is assumed that the reader is already familiar with .
To illustrate the extension of the Euclid's algorithm, consider the computation of gcd(120, 23), which is shown on the table on the left. Notice that the quotient in each division is recorded as well alongside the remainder.
In this case, the remainder in the fourth line (which is equal to 1) indicates that the gcd is 1; that is, 120 and 23 are coprime (also called relatively prime). For the sake of simplicity, the example chosen is a coprime pair; but the more general case of gcd other than 1 also works similarly.
There are two methods to proceed, both using the division algorithm, which will be discussed separately.
This method computes expressions of the form ri = axi + byi for the remainder in each step i of the Euclidean algorithm. Each modulus can be written in terms of the previous two remainders and their whole quotient as follows:
By substitution, this gives:
The first two values are the initial arguments to the algorithm:
The expression for the last non-zero remainder gives the desired results since this method computes every remainder in terms of a and b, as desired.
Example: Compute the GCD of 120 and 23.
The computation proceeds as follows:
Step | Quotient | Remainder | Substitute | Combine terms | |
---|---|---|---|---|---|
1 | 120 | 120 = 120 * 1 + 23 * 0 | |||
2 | 23 | 23 = 120 * 0 + 23 * 1 | |||
3 | 5 | 5 = 120 - 23 * 5 | 5 = (120 * 1 + 23 * 0) - (120 * 0 + 23 * 1) * 5 | 5 = 120 * 1 + 23 * -5 | |
4 | 4 | 3 = 23 - 5 * 4 | 3 = (120 * 0 + 23 * 1) - (120 * 1 + 23 * -5) * 4 | 3 = 120 * -4 + 23 * 21 | |
5 | 1 | 2 = 5 - 3 * 1 | 2 = (120 * 1 + 23 * -5) - (120 * -4 + 23 * 21) * 1 | 2 = 120 * 5 + 23 * -26 | |
6 | 1 | 1 = 3 - 2 * 1 | 1 = (120 * -4 + 23 * 21) - (120 * 5 + 23 * -26) * 1 | 1 = 120 * -9 + 23 * 47 | |
7 | 2 | 0 | End of algorithm |
The last line reads 1 = −9×120 + 47×23, which is the required solution: x = −9 and y = 47.
This also means that −9 is the multiplicative inverse of 120 modulo 23, and that 47 is the multiplicative inverse of 23 modulo 120.
This method attempts to solve the original equation directly, by reducing the dividend and divisor gradually, from the first line to the last line, which can then be substituted with trivial value and work backward to obtain the solution.
Consider the original equation:
120 | x | + | 23 | y | = | 1 |
(5×23+5) | x | + | 23 | y | = | 1 |
23 | (5x+y) | + | 5 | x | = | 1 |
... | ||||||
1 | a | + | 0 | b | = | 1 |
Notice that the equation remains unchanged after decomposing the original dividend in terms of the divisor plus a remainder, and then regrouping terms. If we have a solution to the equation in the second line, then we can work backward to find x and y as required. Although we don't have the solution yet to the second line, notice how the magnitude of the terms decreased (120 and 23 to 23 and 5). Hence, if we keep applying this, eventually we'll reach the last line, which obviously has (1,0) as a trivial solution. Then we can work backward and gradually find out x and y.
Dividend | = | Quotient | x | Divisor | + | Remainder |
---|---|---|---|---|---|---|
120 | = | 5 | x | 23 | + | 5 |
23 | = | 4 | x | 5 | + | 3 |
... |
For the purpose of explaining this method, the full working will not be shown. Instead some of the repeating steps will be described to demonstrate the principle behind this method.
Start by rewriting each line from the first table with division algorithm, focusing on the dividend this time (because we'll be substituting the dividend).
120 | x0 | + | 23 | y0 | = | 1 |
(5×23+5) | x0 | + | 23 | y0 | = | 1 |
23 | (5x0+y0) | + | 5 | x0 | = | 1 |
23 | x1 | + | 5 | y1 | = | 1 |
(4×5+3) | x1 | + | 5 | y1 | = | 1 |
5 | (4x1+y1) | + | 3 | x1 | = | 1 |
5 | x2 | + | 3 | y2 | = | 1 |
|
The table method is probably the simplest method to carry out with a pencil and paper. It is similar to the recursive method, although it does not directly require algebra to use and only requires working in one direction. The main idea is to think of the equation chain as a sequence of divisors . In the running example we have the sequence 120, 23, 5, 3, 2, 1. Any element in this chain can be written as a linear combination of the original x and y, most notably, the last element, gcd(x,y), can be written in this way. The table method involves keeping a table of each divisor, written as a linear combination. The algorithm starts with the table as follows:
a | b | d |
1 | 0 | 120 |
0 | 1 | 23 |
The elements in the d column of the table will be the divisors in the sequence. Each di can be represented as the linear combination . The a and b values are obvious for the first two rows of the table, which represent x and y themselves. To compute di for any i > 2, notice that . Suppose . Then it must be that and . This is easy to verify algebraically with a simple substitution.
Actually carrying out the table method though is simpler than the above equations would indicate. To find the third row of the table in the example, just notice that 120 divided by 23 goes 5 times plus a remainder. This gives us k, the multiplying factor for this row. Now, each value in the table is the value two rows above it, minus k times the value immediately above it. This correctly leads to , , and . After repeating this method to find each line of the table (note that the remainder written in the table and the multiplying factor are two different numbers!), the final values for a and b will solve :
a | b | d |
1 | 0 | 120 |
0 | 1 | 23 |
1 | -5 | 5 |
-4 | 21 | 3 |
5 | -26 | 2 |
-9 | 47 | 1 |
This method is simple, requiring only the repeated application of one rule, and leaves the answer in the final row of the table with no backtracking. Note also that if you end up with a negative number as the answer for the factor of, in this case b, you will then need to add the modulus in order to make it work as a modular inverse (instead of just taking the absolute value of b). I.e. if it returns a negative number, don't just flip the sign, but add in the other number to make it work. Otherwise it will give you the modular inverse yielding negative one.
《蝙蝠侠6Q黑暗骑士》(The Dark KnightQ上映以来,q部房冠军便发起对 IMDB's Top 250 ?/span> 榜首的冲击,在过ȝ几十q_q个位置一直属于《教父》。绝大多C肃观众对《黑暗骑士》爬上榜首感C可思议Q然而这正是 Internet C对这部电影无休止的炒作的l果?/span>
在《黑暗骑士》冲L首期_?/span> Film 报导Q那些蝙蝠侠的爱好者ؓ了达到目的可谓煞费苦心,他们首先寏V教父》施以恶评以这部有史以来最伟大的电影拉下第一名的宝Q事实上他们用力q猛Q《教父》最后落CW三名,居《肖甛_的救赎之后》。最l,《黑暗骑士》如愿以偿爬上了W一名?/span>
在前面提q的 Digg HD-DVD 事g中也发生q同L事,搅局者以一个重要事件ؓ引子Q将一个本来非常准,公正Q值得信赖的系l击垮,最l导致群体智慧理论的破灭?/span>Wikipedia 的一相x?/span>里说Q?/span>在这U情形,Z怺之间的认知与合作遭到破坏Q因Z们对某个观点q于兛_便互相效仿ƈZ众h的意见而失ȝ立思考的能力。这cM情的q错q不在这些用Pq是人的天性,我们l常会被影响Q然而,IMDB, 以及 Digg 之类的系l应当考虑到这一点,q制定相应的机制预防q些事情的发生?br />
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IMDB发展?/span>
IMDb创办?990q?0?7日,?998q开始成?a target="_blank">亚马逊公?/a>旗下的网站?br />
IMDb前n是一个名?#8220;rec.arts.movies”的Usenet新闻l?/a>。当时一热心媄q发地l织hQ列出媄片的演职员表Qƈ为已故媄人撰写小传(那时UC“M名单”Q?990q?0?7日,IMDb的奠ZhCol Needham写了一pdUnixE序Q得所有信息成为可搜烦数据Q这至关重要的功能使新ȝ上的信息变得更有用、更有意义。直到现在,强大无比的交叉搜索功能还是IMDb?a target="_blank">金字招牌?br />
1993q_IMDb.com正式启动Q成Z联网上第一个完全以电媄为内容的|站。之?q_q个|站不断发展壮大Q在国各大校园|中出现镜像Q提交电׃息的用户也越来越多(IMDB的写入权力是开攄Q?br />
1995q_随着量数据带来的信息拥c对员工人数的进一步要求,IMDbC另一个十字\口。Col Needham辞掉了他的正式工作,用自q信用?/a>C了第一台服务器Qƈ使IMDb公司化?br />
1998q_IMDb的信息量l箋以几何数增长,民间自愿贡献的服务器I间很快耗尽Q所有义务工作的~辑人员也被无穷无尽的处理工作没,所q的是,全球最?a target="_blank">电子商务|站亚马逊Amazon.com的创始h杰夫·贝佐?/a>C了IMDbQ那些“白干z?#8221;的义工们l于拿到了薪水?br />
2001q?月,IMDB启动了帮助小演员成名?#8220;宣传?#8221;服务Q?002q?月,专门针对业内人士的收费网站IMDbPro.com启动?