목록알고리즘 (92)
라떼는말이야
문제 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? 파이썬 def sum_arithmetic(range_end, num): n = (range_end - 1)//num return n*(n+1)*num/2 print(sum_arithmetic(1000, 3) + sum_arithmetic(1000, 5) - sum_arithmetic(1000, 15)) 정답 233168 해설
유클리드 알고리즘 (Euclidean algorithm) 두 정수 사이의 최대공약수(GCD, Greatest Common Divisor)를 구하는 알고리즘이다. 유클리드 알고리즘의 동작 두 정수 a, b가 있을 때 r은 a ÷ b의 나머지로 정의한다. 즉, r = a % b이다. (a > b로 가정) 위 프로세스와 같이 나머지가 0이 될 때까지 두 번째 인자 값을 첫 번째 인자 값에 넣고, 나머지를 두 번째 인자 값에 넣는다. 예시 Q1. 2740과 1760의 최대공약수 계산 2740과 1760의 최대 공약수는 20이다. Q2. 25와 60의 최대공약수 계산 25와 60의 최대공약수는 5이다. 위 예제에서는 r1과 r2 중 어느 쪽이 커도 상관 없다는 것을 보여준다. 구현 gcd = lambda a, b..
0. RSA의 키 생성 알고리즘 RSA의 키 생성 알고리즘은 다음과 같다. 자세한 건 이전 글을 참고 바란다. 2020/06/18 - [알고리즘/RSA] - [RSA] 소개 & 키 생성 알고리즘 서로 다른 큰 소수 p, q를 선택한다. (p ≠ q) N = p x q를 계산한다. φ(N) = (p - 1) x (q - 1)을 계산한다. φ(N) 보다 작고, φ(n)와 서로소인 자연수 e를 선택한다. (gcd(e, φ(N))=1, 1 < e < φ(N)인 e 선택) d x e를 φ(N)로 나누었을 때 나머지가 1인 정수 d를 구한다. ( de ≡ 1 mod φ(N) ) , 유클리드 호제법 이용 KU = {e, N}, KR = {d, N}이 된다. 위 알고리즘에서 해결해야 할 문제들이 있다. 1. 큰 소수 ..
RSA는 공개키 암호 알고리즘 중 하나이다. 1978년 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)이 공동 개발하였으며, 이들의 이름 앞글자를 따서 RSA가 되었다. RSA의 안정성은 큰 수에 대한 소인수 분해의 어려움을 기반으로 한다. 일반적으로 공개키 암호는 공개키와 개인키가 한 쌍을 이루며, 공개키로 암호화한 메시지를 개인키로 해독하여 열어볼 수 있기 때문에 암호화 키와 복호화 키가 다르다는 점에서 비대칭키 알고리즘의 특징을 가진다. RSA에서 사용되는 용어들 표기 설명 p, q 매우 큰 두 소수 (p≠q) N p x q gcd(a, b) a, b의 최대 공약수 φ(N) (p - 1) x (q - 1) a mod n a ÷..