Python實(shí)現(xiàn)的中國(guó)剩余定理算法示例
本文實(shí)例講述了Python實(shí)現(xiàn)的中國(guó)剩余定理算法。分享給大家供大家參考,具體如下:
中國(guó)剩余定理(Chinese Remainder Theorem-CRT):又稱孫子定理,是數(shù)論中的一個(gè)定理。即如果一個(gè)人知道了一個(gè)數(shù)n被多個(gè)整數(shù)相除得到的余數(shù),當(dāng)這些除數(shù)兩兩互質(zhì)的情況下,這個(gè)人就可以唯一的確定被這些個(gè)整數(shù)乘積除n所得的余數(shù)。
維基百科上wiki:The Chinese remainder theorem is a theorem of number theory, which states that, if one knows the remainders of the division of an integer n by several integers, then one can determine uniquely the remainder of the division of n by the product of these integers, under the condition that the divisors are pairwise coprime.
有一數(shù)n,被2除余1,被3除余2,被5除余4,被6除余5,正好被7整除,求該數(shù)n.
分析:n被2除余1,說明概述最小為1,之后該條件一直滿足,所以需要加上的數(shù)一定是2的倍數(shù)。被3除余2,即(1+2*i)%3=2,其中i為正整數(shù)。之后該條件一直滿足,所以需要加上的數(shù)一定是3的倍數(shù),又因?yàn)榍耙粋€(gè)條件的限制,所以是2和3的最小公倍數(shù)的整數(shù)倍。一次類推,知道找到被7整除的數(shù)。
n=1 while(n%3 != 2): n += 2 while(n%5 != 4): n += 6 while(n%6 != 5): n += 30 while(n%7 != 0): n += 30
最終結(jié)果為119。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python3設(shè)計(jì)模式之簡(jiǎn)單工廠模式
這篇文章主要為大家詳細(xì)介紹了python3設(shè)計(jì)模式之簡(jiǎn)單工廠模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Matplotlib實(shí)戰(zhàn)之直方圖繪制詳解
直方圖,又稱質(zhì)量分布圖,用于表示數(shù)據(jù)的分布情況,是一種常見的統(tǒng)計(jì)圖表,這篇文章主要為大家詳細(xì)介紹了如何使用Matplotlib繪制直方圖,需要的可以參考下2023-08-08
Python Scrapy框架:通用爬蟲之CrawlSpider用法簡(jiǎn)單示例
這篇文章主要介紹了Python Scrapy框架:通用爬蟲之CrawlSpider用法,結(jié)合實(shí)例形式分析了Scrapy框架中CrawlSpider的基本使用方法,需要的朋友可以參考下2020-04-04
詳解Python查找算法的實(shí)現(xiàn)(線性,二分,分塊,插值)
這篇文章主要為大家介紹了Python中常見的四種查找算法的實(shí)現(xiàn):線性、二分、分塊和插值,文中通過圖片詳細(xì)講解了它們實(shí)現(xiàn)的原理與代碼,需要的可以參考一下2022-04-04

