07-數論算法

1. 最大公約數

歐幾里得算法(輾轉相除法)求最大公約數(Greatest Common Divisor残揉,GCD)的遞歸定理:對任意非負整數a和任意正整數b
gcd(a,b)=gcd(b,a \ mod \ b)
歐幾里得算法遞歸實現:

// 歐幾里得算法遞歸實現
public static int gcd(int a, int b) {
    if (b == 0)
        return a;
    return gcd(b, a % b);
}

歐幾里得算法非遞歸實現:

// 歐幾里得算法非遞歸實現
public static int gcd(int a, int b) {
    int r;
    while (b > 0) {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}

2. 最小公倍數

\begin{aligned} ①:& 令\quad a = gcd \times d1 = \frac{lcm}{m1}, b = gcd \times d2 = \frac{lcm}{m2}\\ ②:& \frac{a}死遭 = \frac{gcd \times d1}{gcd \times d2} = \frac{\frac{lcm}{m1}}{\frac{lcm}{m2}} = \frac{d1}{d2} = \frac{m2}{m1}\\ ③:& 由最大公約數(gcd)與最小公倍數(lcm)的定義可推出:d1與d2互質,m1與m2互質\\ ④:& 結合②和③ \Rightarrow d1=m2,d2=m1\\ ⑤:& a \times b = (gcd \times d1) \times (\frac{lcm}{m2}) = gcd \times lcm \times \frac{d1=m2}{m2}=gcd \times lcm\\ & 結論:a\times b = gcd(a,b) \times lcm(a,b) \end{aligned}

求最小公倍數代碼實現:

// 求最小公倍數
public static int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

3. 模取冪

模取冪:求一個數的冪對另一個數的模運算,a^b \ mod \ n

// 模取冪:Math.pow(a, b) % n
// a, b為非負整數逗栽,n為正整數
public static int modularExponentiation(int a, int b, int n) {
    int c = 0;
    int d = 1;
    String binaryB = Integer.toBinaryString(b);
    for (int i = 0; i < binaryB.length(); i++) {
        c *= 2;
        d = (d * d) % n;
        if (binaryB.charAt(i) == '1') {
            c++;
            d = (d * a) % n;
        }
    }
    return d;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匾嘱,隨后出現的幾起案子性含,更是在濱河造成了極大的恐慌,老刑警劉巖厘线,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件识腿,死亡現場離奇詭異出革,居然都是意外死亡造壮,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門骂束,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耳璧,“玉大人,你說我怎么就攤上這事展箱≈伎荩” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵混驰,是天一觀的道長攀隔。 經常有香客問我,道長栖榨,這世上最難降的妖魔是什么昆汹? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮婴栽,結果婚禮上满粗,老公的妹妹穿的比我還像新娘。我一直安慰自己愚争,他們只是感情好映皆,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轰枝,像睡著了一般捅彻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鞍陨,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天沟饥,我揣著相機與錄音,去河邊找鬼湾戳。 笑死贤旷,一個胖子當著我的面吹牛,可吹牛的內容都是我干的砾脑。 我是一名探鬼主播幼驶,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼韧衣!你這毒婦竟也來了盅藻?” 一聲冷哼從身側響起购桑,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氏淑,沒想到半個月后勃蜘,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡假残,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年缭贡,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辉懒。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡阳惹,死狀恐怖,靈堂內的尸體忽然破棺而出眶俩,到底是詐尸還是另有隱情莹汤,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布颠印,位于F島的核電站纲岭,受9級特大地震影響,放射性物質發(fā)生泄漏线罕。R本人自食惡果不足惜止潮,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闻坚。 院中可真熱鬧沽翔,春花似錦、人聲如沸窿凤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雳殊。三九已至橘沥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夯秃,已是汗流浹背座咆。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仓洼,地道東北人介陶。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像色建,于是被迫代替她去往敵國和親哺呜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內容