도구스학업·수학

해밍 수(5-매끄러운 수) 생성기

소인수가 2, 3, 5뿐인 해밍 수를 세 포인터 병합으로 크기순으로 나열하고, 임의의 수가 해밍 수인지 소인수분해로 판정합니다.

1~2000

30번째 항

80

30개를 크기순으로 나열하면 아래와 같습니다

전체 수열

1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36, 40, 45, 48, 50, 54, 60, 64, 72, 75, 80
이미 만든 항에 2, 3, 5를 곱한 세 후보 중 가장 작은 값을 다음 항으로 확정하는 세 포인터 병합으로 수열을 만듭니다. “2·3·5의 배수인가”가 아니라 “소인수가 2, 3, 5뿐인가”가 기준입니다 — 14(=2×7)는 2의 배수지만 소인수 7이 섞여 있어 해밍 수가 아닙니다.

계산 방법

  1. 1몇 번째 항까지 볼지 입력하면 해밍 수 수열이 순서대로 나옵니다.
  2. 2특정 수를 넣으면 그 수가 해밍 수인지, 아니라면 2·3·5 밖의 어떤 소인수 때문인지 보여줍니다.
  3. 3세 포인터(×2, ×3, ×5)가 어떻게 다음 항을 결정하는지 과정을 함께 확인할 수 있습니다.

자주 묻는 질문

소인수가 2, 3, 5 중에서만 나오는 양의 정수입니다. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30... 처럼 이어지며, 다익스트라가 제시한 문제라 "다익스트라 수"나 "ugly number"라고도 부릅니다.

다릅니다. 14는 2의 배수지만 2×7이라 소인수 7이 섞여 있어 해밍 수가 아닙니다. 20은 2²×5로 소인수가 2와 5뿐이라 해밍 수입니다. "배수인가"가 아니라 "소인수분해했을 때 2, 3, 5 밖의 소인수가 하나도 없는가"를 봐야 합니다.

이미 만든 수열의 항에 2, 3, 5를 각각 곱해 다음 후보 세 개를 만들고, 그중 가장 작은 값을 다음 항으로 확정합니다. 다음 후보 세 값은 아직 그 배수를 곱하지 않은 가장 이른 항을 가리키는 포인터로 관리해서, 이미 나온 값을 다시 곱하는 중복 계산 없이 매번 정확히 다음 항만 골라냅니다.

6은 이전 항 3에 2를 곱해서도, 이전 항 2에 3을 곱해서도 나옵니다. 하나만 옮기면 다른 포인터가 다음 차례에 또 6을 만들어 수열에 6이 두 번 들어가게 됩니다. 같은 값을 낸 포인터를 전부 옮겨야 중복 없이 딱 한 번만 나옵니다.

아니요. 모든 계산은 브라우저 안에서만 이뤄지며 서버로 전송되지 않습니다.

알아두면 좋은 점

  • 수열 생성은 항 개수 상한을 두어 브라우저에서 바로 계산할 수 있는 범위로 제한합니다.
  • 판정 기능은 자바스크립트의 안전한 정수 범위(2^53-1) 안에서만 정확합니다.

함께 보면 좋은 도구

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