數論相關
找出質數
原理:不斷加2,然後把前面找到的質數也除看看\(因為質數不會與其前面任何質數相除為0\),最後再把2放到開頭
function findPrime(num) {
var primes = [];
for (let n = 3; n <= num; n += 2) {
if (primes.every(function (prime) { return n % prime != 0 })) {
primes.push(n);
}
}
primes.unshift(2);
return primes
}模反元素
整數 a 對模數 n 之模反元素b存在的充分必要條件是 a 和 n 互質
a x b 除與 n 餘數等於1
等同於下式
a x b ≡ 1 (mod n)b即為a之模反元素
假設a 為 3 以及n 為 11 則算出b 為 4
中國剩餘定理
https://www.youtube.com/watch?v=PM2D3xzqH\_E&t=327s&list=LLeiE2pix0r2Mn7Xm4zi3WYg&index=7
由來:也常被稱韓信點兵,一個數除三餘2,除五餘3,除七餘2,求此數?
算法:
最後30+63+35 = 128 即為我們要找的數
歐拉函數
而如果a可以被因式分解找出兩個數則φ(a)也等於如下
其公式證明需用到中國剩餘定理
歐拉定理
假設有兩數a和b,且兩數互質
費馬小定理
今天如果歐拉定理中的b是質數則其變為費馬小定理
因為b為質數,所以小於他並與它互質的數之數量為b - 1(因為小於質數的數都與他互值,所以φ(b)可以替換為 b - 1)
假設有兩數a和b,a為整數,b為質數,且a不是b的倍數,則以下恆成立
應用如下:
在下圖中第二到第三步驟時的2**12可換為18 即是應用了此定理。(因為2 ** 13 - 1 % 13 = 1)

快速取模運算(fast-modular-exponentiation)

另見: Exponentiation by squaring
大步小步算法
假設今天是給定a,b,p要求x ,則可用大步小步算法
Last updated
Was this helpful?