나눗셈 시도법
나눗셈 시도법 (Trial division)은 주어진 정수가 소수인지 판별하는 가장 기본적인 알고리즘 중 하나이며, 주어진 정수의 약수를 찾는 방법으로도 사용될 수 있다. 이 방법은 판별하고자 하는 정수를 2부터 시작하여 해당 정수의 제곱근까지의 모든 정수로 나누어보는 방식으로 작동한다. 만약 나누어떨어지는 경우가 존재한다면, 해당 정수는 소수가 아니며, 나누어떨어지는 수가 존재하지 않는다면 해당 정수는 소수로 판정된다.
작동 원리
나눗셈 시도법의 핵심은 다음과 같다:
- 판별하고자 하는 정수 n을 입력받는다.
- 2부터 √n 까지의 모든 정수 i에 대해 다음을 수행한다.
- 만약 n이 i로 나누어떨어진다면 (n mod i == 0), n은 소수가 아니며 i는 n의 약수이다.
- 2단계에서 나누어떨어지는 수가 발견되지 않았다면, n은 소수이다.
여기서 제곱근까지만 확인하는 이유는, n의 약수 a가 존재한다면 n = a * b를 만족하는 또 다른 약수 b가 존재하며, a와 b 중 적어도 하나는 √n보다 작거나 같기 때문이다. 따라서 √n까지만 확인해도 모든 약수의 존재 여부를 파악할 수 있다.
장단점
- 장점: 구현이 매우 간단하며, 작은 수에 대해서는 효율적으로 작동한다. 또한, 소수 판별뿐만 아니라 약수를 찾는 데에도 사용할 수 있다.
- 단점: 큰 수에 대해서는 제곱근까지 모든 수를 나누어봐야 하므로 계산량이 매우 많아져 비효율적이다. 따라서 큰 수의 소수 판별에는 적합하지 않으며, 더 효율적인 알고리즘(예: 밀러-라빈 소수판별법, AKS 소수판별법)이 필요하다.
활용
나눗셈 시도법은 암호학적으로 안전하지 않은 작은 소수를 생성하거나, 작은 수의 소수 판별에 사용될 수 있다. 또한, 다른 소수 판별 알고리즘의 전처리 단계로 활용되어, 작은 약수를 미리 제거하는 데 사용되기도 한다.