Algorithm-math.md
μ§μ, μ§λ²
μ΅μ곡배μ, μ΅λ곡μ½μ
μ§μμ μ§λ²
N μ§λ²μΌλ‘ λ¬Έμμ΄μ λ³ννκΈ°
def stoi(s, n):
ret = 0
l = len(s)
for i in range(l): ret += int(s[i]) * n**(l-i-1)
return ret
=> νμ©
κ±°λμ κ³± μ°μ° baekjoon1629λ²
쑰건문 + Nμ§μ λ³ν λ°©λ²μΌλ‘ ν΄κ²° κ°λ₯
def pow_custom(a, b):
ret = 1
while b:
if b % 2 == 1: ret *= a
a = a*a
b //= 2
return ret
ν° μλ₯Ό κ³±νλ κ²μ Pythonμμλ λ리기 λλ¬Έμ λͺ¨λλ¬ μ°μ°μλ₯Ό μ€κ°μ€κ°μ μ°μ!
μ΅λ곡μ½μμ μ΅μ곡배μ
μ΅λ곡μ½μ(GCD) : 곡μ½μ μ€ μ΅λκ°
μ΅λ곡μ½μκ° 1μ΄λ©΄ μλ‘μ
μ΅μ곡배μ(LCM) : 곡배μ μ€ μ΅μκ°
LCM(A, B) = A * B / GCD(A, B)
=> GCDλ§ μ ꡬνλ©΄ LCMμ O(1)μ ꡬν μ μλ€.
μ΅λ곡μ½μ
# μ λ°©ν₯ 체ν¬
def gcd(a, b):
ret = 0
for i in range(min(a, b)):
if a % i == 0 and b % i == 0:
ret = i
return ret
# μλ°©ν₯ μ²΄ν¬ => λ λΉ λ¦
def gcd(a, b):
for i in range(min(a, b), 0, -1):
if a % i == 0 and b % i == 0:
return i
β πμ ν΄λ¦¬λ νΈμ λ²
μμ λ λ°©μλ³΄λ€ ν¨μ¬ λΉ λ₯΄λ€
GCD(A, B) = GCD(B, A % B)
# μλ => O(log N)
def gcd(a, b):
return b if a % b == 0 else gcd(b, a%b)
μμμ μμΈμλΆν΄
μ¬λ¬κ°μ§ μμ νλ³λ²
# 2λΆν° N-1κΉμ§ 체ν¬
def isPrime(N):
for i in range(2, N):
if N % i == 0: return False
return True
# 2λΆν° sqrt(N)κΉμ§ 체ν¬
def isPrime(N):
i = 2
while i*i <= N:
if N % i == 0: return False
return True
μλΌν μ€ν
λ€μ€μ 체
def era(N):
ck, p = [False for _ in range(N+1)], []
for i in range(2, N+1):
if ck[i] == True: continue
p.append(i)
for j in range(i*i, N+1, i):
ck[j] = True
return ck, p
Last updated