도구스학업·수학

일차합동식 ax ≡ b (mod n) 해 계산기

ax ≡ b (mod n)의 해가 있는지 판정하고 있으면 전부 찾아 줍니다. gcd(a, n)이 b를 나눌 때만 해가 있고 그때 개수가 정확히 gcd개, 해들이 n/gcd 간격으로 놓인다는 것을 확장 유클리드 과정과 함께 보여 줍니다.

4x ≡ 8 (mod 12)

4개

gcd(4, 12) = 4이고 이것이 8을 나누므로 해가 정확히 4개 있습니다. 해들은 3 간격으로 놓입니다.

gcd(a, n)4
해의 개수4개
가장 작은 해2
해 사이 간격 n/gcd3

해 전부 (0 이상 n 미만)

x = 2, 5, 8, 11

가장 작은 해에 3씩 더하면 나머지 해가 모두 나옵니다. 법 n을 벗어나면 다시 처음으로 돌아오므로 서로 다른 해는 4개뿐입니다.

양변과 법을 gcd로 나누면

1x ≡ 2 (mod 3)

축약하면 gcd(1, 3) = 1이라 1의 역원 1이 반드시 있고, 해가 법 3에서 딱 하나입니다. 그것이 x = 2입니다. 여기에 3을 더해 가며 법 12 안에 남는 것이 4개라 해가 그만큼입니다.

유클리드 호제법

나눠지는 수나누는 수나머지
41204
12430

나머지가 0이 되기 직전의 나누는 수가 gcd(4, 12) = 4입니다. 같은 과정에서 계수까지 따라가면(확장 유클리드) 가장 작은 해가 바로 나옵니다.

「해가 있으면 하나」라고 넘겨짚기 쉽지만 그것은 gcd(a, n) = 1일 때만 맞습니다. 모듈러 역원(ax ≡ 1)은 gcd가 1인 경우만 다루므로 늘 해가 하나라, 그 인상이 남기 쉽습니다. 해가 여러 개일 때 그것들이 n/gcd 간격으로 고르게 놓인다는 것이 일차합동식의 구조입니다.

계산 방법

  1. 1a, b, n을 넣습니다. ax ≡ b (mod n) 꼴로 읽습니다.
  2. 2먼저 gcd(a, n)을 봅니다. 이것이 b를 나누지 않으면 해가 아예 없습니다.
  3. 3나누면 해가 정확히 gcd개 있습니다. 목록에서 전부 확인합니다.
  4. 4해들이 n ÷ gcd 간격으로 고르게 놓이는지 봅니다. 이것이 이 식의 구조입니다.
  5. 5아래 확장 유클리드 과정에서 가장 작은 해가 어떻게 나왔는지 따라갑니다.

자주 묻는 질문

gcd(a, n)이 b를 나누면 해가 있고, 나누지 않으면 해가 하나도 없습니다. 좌변 ax를 n으로 나눈 나머지는 언제나 gcd(a, n)의 배수이기 때문입니다. 예를 들어 4x ≡ 5 (mod 12)는 좌변이 늘 짝수라 홀수 5가 될 수 없어 해가 없습니다.

해가 있다면 법 n 안에서 정확히 gcd(a, n)개입니다. 4x ≡ 8 (mod 12)은 gcd가 4라 해가 2, 5, 8, 11 넷입니다. 「해가 있으면 하나」라고 넘겨짚기 쉽지만 그것은 gcd가 1일 때만 맞는 말입니다.

n ÷ gcd 간격으로 고르게 놓입니다. 양변과 법을 gcd로 나눈 축약식 a′x ≡ b′ (mod n′)은 해가 딱 하나(x₀)인데, 법 n에서 x ≡ x₀ (mod n′)를 만족하는 수가 x₀, x₀+n′, x₀+2n′ … 로 gcd개 있기 때문입니다.

역원 계산기는 b = 1인 특수한 경우만 다룹니다. ax ≡ 1 (mod n)은 gcd가 1이어야 풀리고 해도 하나뿐이라, 해가 여러 개인 일반형은 다루지 않습니다. 이 계산기는 b가 무엇이든, gcd가 1이 아니어도 해 전체를 냅니다.

ax ≡ b (mod n)은 ax − ny = b라는 일차 부정방정식과 같은 말이므로 확장 유클리드 한 번이면 끝납니다. 양변과 법을 g = gcd(a, n)으로 나눠 a′x ≡ b′ (mod n′)로 만들면 gcd(a′, n′) = 1이라 a′의 역원이 반드시 있고, x₀ = b′ × (a′의 역원) mod n′이 가장 작은 해입니다.

됩니다. 0·x ≡ b (mod n)은 gcd(0, n) = n이므로 n이 b를 나눌 때만 해가 있고, 그때는 해가 n개 — 즉 모든 x가 해입니다. 규칙에 예외를 두지 않아도 그대로 맞아떨어지는 경계값이라 테스트로 고정해 두었습니다.

중국인의 나머지 정리 계산기를 쓰면 됩니다. 이 계산기는 식 하나를 푸는 것이고, x ≡ 2 (mod 3)과 x ≡ 3 (mod 5)처럼 여러 식을 동시에 만족하는 x를 찾는 것은 별도의 계산입니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 검증은 곧이곧대로 0부터 n−1까지 넣어 본 결과를 정답지로 삼아 했습니다. n = 2부터 60까지, 그 안의 모든 a와 b 조합(약 7만 가지)에 대해 확장 유클리드로 구한 해 집합이 전수 대입과 완전히 일치하는지 대조했습니다.
  • 「해가 있으면 gcd개」와 「해들이 n/gcd 간격」이라는 두 성질도 같은 범위에서 실제로 세어 확인했습니다.
  • a = 0, b = 0, 음수 입력, 법을 넘는 입력을 모두 경계값 테스트로 고정했습니다. 특히 a = 0은 gcd(0, n) = n이 되어 규칙이 그대로 성립하는지 확인하는 자리입니다.
  • 법은 1천만까지 다룹니다. 검산에서 a × x를 곱하는데 둘 다 법 미만이라 곱이 10¹⁴로, 정확히 나타낼 수 있는 한계(2⁵³) 안쪽에 머무는 선입니다.
  • 해가 아주 많을 때는 60개까지만 보이고 전체 개수는 따로 셉니다.
  • 확장 유클리드와 나머지 계산은 모듈러 역원 계산기와 같은 코드(src/lib/calc/modularInverse.ts)를 씁니다.
  • 합동식의 해 구조는 정의로 확정되는 것이라 해가 바뀌어도 달라지지 않습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.