1. Divisors
1)
- d๊ฐ n์ ๋๋์ด ๋จ์ด์ง๊ฒ ํ ๋, ์ฆ n=dq๋ฅผ ๋ง์กฑํ๋ integer q๊ฐ ์กด์ฌํ ๋, d divides n์ด๋ผ๊ณ ๋งํ๋ค.
- ์ด ๋ q๋ฅผ quotient, d๋ฅผ divisor ๋๋ n์ factor๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- d divides n์ผ ๋ d|n์ผ๋ก ์ด๋ค.
Theorem 5.1.3
m, n, d๋ฅผ ์ ์๋ผ๊ณ ํ์. ๋ง์ฝ d|m์ด๊ณ d|n์ด๋ฉด d|(m±n)์ด๋ค. ๋ํ d|m์ด๋ฉด d|mn์ด๋ค.
proof : d|m์ด๊ณ d|n์ด๋ฉด m=dq, n=dq' ๋ผ๊ณ ์ธ ์ ์๋ค. m+n = dq + dq' = d(q+q')์ด๋ค.
๋ฐ๋ผ์ d|(m+n) ์ด๋ค.
2) Prime and Composite
- Prime : ์์
- Composite : ํฉ์ฑ์
composition์ 2์ ๋ฃจํธn ์ฌ์ด์ divisor d๋ฅผ ๊ฐ๋๋ค.
* ์์์ ํฉ์ฑ์๋ฅผ ๊ตฌ๋ถํ๋ ์๊ณ ๋ฆฌ์ฆ
//input : n
// output : d
is_prime(n) {
for d=2 to sqrt(n) {
if(n % d ==0)
return d
}
return 0
}
๋ง์ฝ ์์์ด๋ฉด 0์ returnํ๊ณ ํฉ์ฑ์์ด๋ฉด ๋๋์ด ๋จ์ด์ง๋ divisior ๊ฐ์ ๋ฆฌํดํ๋ค.
Theorem 5.1.11
1๋ณด๋ค ํฐ ์ ์๋ ์์๋ค์ ๊ณฑ์ผ๋ก ๋ํ๋ผ ์ ์๋ค. ๋ํ ์ด ์์๋ค์ด ์ค๋ฆ์ฐจ์์ผ๋ก ์ฐ์ฌ์ง๋ค๋ฉด, ์ด factorization์ uniqueํ๋ค.
Theorem 5.1.12
์์์ ๊ฐ์๋ ๋ฌดํํ๋ค.
proof : p๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ชจ๋ ์์๋ค์ p1, p2....pn ์ด๋ผ๊ณ ํ์.
m = p1p2...pn + 1 ์ด๋ผ๊ณ ํ๊ณ , m์ q๋ก ๋๋์ด 1์ด ๋จ๋ ์, m = piq + 1์ด๋ผ๊ณ ํ๋ฉด ๋ชจ๋ i=1 to n๊น์ง pi๋ m์ ๋๋์ด ๋จ์ด์ง๊ฒ ๋ง๋ค์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ p'๋ m์ prime factor์ด๊ณ , p'๋ ์ด๋ค pi์๋ ๊ฐ์ง ์๋ค. ๋ฐ๋ผ์ p1, p2 ,..., pn์ p๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์๋ค์ ๋ฆฌ์คํธ์ด๋ฏ๋ก p'>p์ธ pi๋ฅผ ๋ฌด์กฐ๊ฑด ๊ฐ๋๋ค.
3) ๊ณต์ฝ์์ ๊ณต๋ฐฐ์
- Greatest Common Divisor : ์ต๋๊ณต์ฝ์( gcd(m,n) )
- Least Common Multiple : ์ต์๊ณต๋ฐฐ์ ( lcm(m,n) )
Theorem 5.1.25
gcd(m,n) * lcm (m,n) = mn
2. Representation of Integers and Integer Algorithms
1) Number system
-Binary digits: 0, 1 (bits)
-hexadecimal, octal ...
-์ปดํจํฐ๋ ์ด์ง์๋ก ๋์๊ฐ. positive integer n์ ํํํ๊ธฐ ์ํด์๋ ๋ช bits๊ฐ ํ์ํจ.
integer n์ ํํํ๋๋ฐ์๋ k+1 bits๊ฐ ํ์ํ๋ค. ์ด ๋ k๋ log n ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๊ณ , log n ์ k+1๋ณด๋ค ์๋ค. ๋ฐ๋ผ์
" k+1 <= 1+log n < k+2 " ์ด๋ฏ๋ก k+1 = 1+log n ์ด๋ค. ์ฆ, integer n์์ ํ์ํ ๋นํธ์๋ 1+log n์ด๋ค.
์์ ๋์จ ์์ ํฉ์ฑ์ ๊ตฌ๋ถํ๋ ์๊ณ ๋ฆฌ์ฆ์ the worst case time์ Θ(√n)
C(√n) ≥ Cc^s ์ด๋ฏ๋ก Exponential time in the input size s ๋ผ๋๋ฐ ๋ญ์๋ฆฌ์
2) Binary to Decimal
*์ด์ง์ c ๊ฐ์ b์ง์๋ก ๋ฐ๊พธ๋ ์๊ณ ๋ฆฌ์ฆ
//input : c, n, b
// output : dec_val
base_b_to_dec(c, n, b){
dec_val = 0;
power = 1;
for (i=0; i<n; i++){
dec_val = dec_val + ci * power
power = power*b
}
return dec_val
}
3) Decimal to Binary
//input : m,b
// output : c,n
dec_to_base_b(m,b,c,n){
n= -1;
while(m>0){
n = n+1;
c_n = m mode b;
m= m/b;
}
}
4) Hexadecimal number System
5) addition
- Binary addition
* Binary addition table
* ์๊ณ ๋ฆฌ์ฆ
//input : a, b, n
//output : s
binary_addition(a, b, n, s){
carry = 0;
for (i=0;i<n;i++){
s_i = (a_i + b_i + carry) % 2;
carry = (a_i + b_i + carry) / 2
}
s_n+1 = carry
}
- Hexadecimal addition
6) Exponentiation
a^n์ ๊ณ์ฐํ์!
โ ๋จ์ ๋ฐ๋ณต ( repeated multiplication )
a^n = a*a*...*
โก ์ ๊ณฑ์ ์ด์ฉ
a^29 = a^1 * a^4 * a^8 * a^16
- a^2 = a*a
- a^4 = a^2*a^2
- a^8 = a^4 * a^4
- a^16 = a^8 * a^8
-> 7๋ฒ์ ๊ณ์ฐ
* squring์ ํ์ฉํ a^n์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ
//input : a, n
//output : a^n
exp_via_repeated_squaring(a,n){
result = 1;
x = a;
while (n>0){
if(n % 2 ==1)
result = result * x;
x = x*x;
n=n/2;
}
return result;
}
Theorem 5.2.17
๋ง์ฝ a, b, z๊ฐ ์์ ์ ์๋ผ๋ฉด, ab mod z = [(a mod z) (b mod z)] mod z
//input : a, n, z
//output : a^n mod z
exp_mod_via_repeated_squaring(a,n,z){
result = 1;
x = a mod z;
while (n>0){
if(n % 2 ==1)
result = (result * x) mod z;
x = (x*x) mod z;
n=n/2;
}
return result;
}
3. The Euclidean algorithm
- Euclid algorithm
: gcd(a, b) = gcd(b, a mod b)
Theorem 5.3.2
a๊ฐ ์์๊ฐ ์๋ ์ ์์ด๊ณ , b๊ฐ ์์ ์ ์์ด๊ณ , r=a mod b์ด๋ผ๋ฉด, gcd(a, b) = gcd(b, r) ์ด๋ค.
//input : a, b
//output : greatest common divisor of a and b
gcd(a, b){
//make a largest
if(a<b)
swap(a,b);
while ( b != 0 ){
r=a mod b;
a = b;
b = r;
}
return a;
}
* a special result
Theorem 5.3.7.
a์ b๊ฐ ์์ด ์๋ ์ ์์ผ ๋(๋จ, ๋ ๋ค 0์ด๋ฉด ์๋จ), gcd(a, b) = sa + tb๋ฅผ ๋ง์กฑํ๋ ์ ์ s์ t๊ฐ ์กด์ฌํ๋ค.
ex) gcd(273, 110) = s*273 + t*110
1) gcd(273, 110) ์ฐพ๊ธฐ (=1)
2) ๋ค์ ๋์๊ฐ์ ๋ง์ง๋ง ๋ฐฉ์ ์ ํ๊ธฐ
a= 273, b=110, 273 mod 110 = 53 -> 53 = 273 - 110*2
110 mod 53 = 4 -> 4 = 110 - 53*2
53 mod 4 = 1 -> 1 = 53 - 4*13
์ฆ, 1= 53 - (110 - 53*2)*13
= 27*53 - 13*110
= 27*(273 - 110*2) - 13*110
= 27*273 - 67*110
๋ฐ๋ผ์ s=27, t=-67 ์
- Modulo convention
"0 (mod 5) vs "0 (mod 4)"
N(mod 5)์์ N์๋ 0๋ถํฐ 4๊น์ง์ ์ซ์๊ฐ ๋ค์ด๊ฐ ์ ์์
- Inverse Modulo of b (mod m)
bb^(-1) = 1 (mod m)
m์ผ๋ก ๋๋ ๋ ๊ธฐ์กด ์์ ์ด๋ค ์๋ฅผ ๊ณฑํด์ ๋๋จธ์ง๊ฐ 1์ด ๋์จ๋ค๋ฉด, ๊ทธ ์๊ฐ mod m number์ด๋ค.
ex) inverses for (mod 5) number
0 -> 0*0^(-1) mod 5 = 1? ์กด์ฌํ์ง ์์
1 -> 1*1^(-1) mod 5 = 1? 1(mod 5)
2 -> 2*2^(-1) mod 5 = 1? 3(mod 5)
3 -> 3*3^(-1) mod 5 = 1? 2(mod 5)
4 -> 4*4^(-1) mod 5 = 1? 4(mod 5)
์ฆ ์ด๋ค ์์ ๊ณฑํด์ ๋๋จธ์ง๊ฐ 1์ด ๋์ค๊ฒ ๋ง๋๋ ์๊ฐ ๋ฐ๋ก inverse modulo of b (mod m)
2์๋ 3์ ๊ณฑํด์ผ 5๋ก ๋๋์์ ๋ ๋๋จธ์ง๊ฐ 1 (์ด ๋ modulo์๋ 0~4๊ฐ ๊ฐ๋ฅํจ)
๋ง์ฝ gcd(e, Φ) = 1 ์ด๋ผ๊ณ ํด๋ณด์
1 = ed + Φy
ed = -Φy + 1
d๋ e์ inverse modulo (์ฆ mod Φ)
๋ํ e์ Φ๋ ์๋ก์์ (mutually prime)
๋ชจ๋ฅด๊ฒ ์ผ๋ ์์๋ก ํ์ด๋ณด์
e=110, Φ= 273
gcd(e, Φ) = 1, -67e + 27Φ=1์ด๋ค.
ed mod Φ = 110(-67) mod 273 = 1
d = -67 (๊ทผ๋ฐ ์ด๊ฑฐ๋ 0๊ณผ 273 ์ฌ์ด๊ฐ ์๋)
s=d mod Φ = -67 mod 273 = 206
110 modulo 273์ inverse๋ 206์!
(-67 = 273*(-1) + 206)
4. The RSA public-key cryptosystem
1) Cryptosystems : ๋ณด์ ํต์ ์ ์ํ ์์คํ ? ์ ๋ถ, ์ฐ์ , ํ์ฌ ๋ฑ๋ฑ์์ ์
sender๊ฐ ์ํธํ(encryps)ํด์ ๋ณด๋ด๋ฉด receiver๊ฐ ๋ณตํธํ(decrypts)ํด์ ๋ฉ์์ง๋ฅผ ์ฝ์
RSA ( Rivest, Shamir, Adleman) System
: ๋ฉ์ธ์ง๋ ์ซ์๋ก ํํ๋จ
์์ฃผ ํฐ ์ญ์ง์ ์ ์๋ฅผ ์ธ์๋ถํดํ๋๋ฐ ๋คํญ์์ ์๊ฐ ์์ ํด๊ฒฐํ ์ ์๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค๋ ์ฌ์ค์ ๊ธฐ๋ฐํจ.
์์ ์ ๊ทธ๋ฅ ๋จ์ํ๊ฒ ์ด๋ค ๋ฌธ์๋ฅผ ๋ค๋ฅธ ๋ฌธ์๋ก replaceํ๋๋ฐ, ์ด๊ฑด ์ฝ๊ฒ ๋ซ๋ฆผ
2) RSA
- ๋ฉ์์ง๋ ์ซ์๋ก ํํ๋๋ค.
A, B, C ,... => 1, 2, 3...
- SEND MONEY => 20, 5, 15, 1, 14, 16, 15, 5, 26 => 200515011416150526
โ ๋ ๊ฐ์ ์์ p, q ๋ฅผ ๊ณจ๋ผ์ n=pq๋ฅผ ๊ณ์ฐํ๋ค.
โก Φ = (p-1)(q-1) ์ ๊ณ์ฐํ๋ค.
โข gcd(e, Φ)=1 ์ธ ์๋ฌด e๋ฅผ ๊ณ ๋ฅธ๋ค.
โฃ ed mod Φ = 1์ธ d๋ฅผ ๊ณ์ฐํ๋ค. (0<d<Φ)
โค n, e๋ ์ํธํ ํค(encryption key, prime) : public
p, q, d๋ ๋ณตํธํ ํค(decryption key) : secret
โฅ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋, m์ c=m^e mod n ์ผ๋ก ์ํธํํ๋ค.
โฆ c๋ m=c^d mod n์ผ๋ก ๋ณตํธํํ๋ค.
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > Discrete mathematics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์ฐ์ํ] Chapter 1. Logic and proofs (0) | 2021.05.03 |
---|---|
[์ด์ฐ์ํ] Chapter 6. Counting methods and the pigeonhole principle (0) | 2021.05.02 |
[์ด์ฐ์ํ] Chapter 4. Algorithms (0) | 2021.04.07 |
[์ด์ฐ์ํ] Chapter 3. Relations (1) | 2021.04.07 |