약수를 알고 싶은 자연수를 하나 입력해 주세요. 약수의 목록, 약수의 개수, 곱셈의 쌍, 소인수분해를 한꺼번에 계산합니다.
이 페이지에서 할 수 있는 것
- 자연수를 하나 넣기만 하면 그 수의 약수를 작은 순서대로 모두 나열합니다(빠짐·중복 없음)
- 곱해서 그 수가 되는 ‘약수의 쌍’과 ‘약수의 개수’도 함께 알 수 있습니다
- 소인수분해(\(120 = 2 \times 2 \times 2 \times 3 \times 5\) 같은 꼴)와 나눗셈 과정도 보여 줍니다
- 약수가 1과 그 수 자신, 2개뿐이면 소수입니다. 그래서 소수인지 판별할 때도 쓸 수 있습니다
- 약수를 찾는 방법의 쉬운 해설과 Excel·Google 스프레드시트·Python용으로 복사해 쓸 수 있는 수식도 이 페이지에 모아 두었습니다
이 계산은 어디에 쓰일까요?
\(\frac{24}{36}\)을 약분하려면 분자 24와 분모 36에 공통인 약수를 찾아 나눕니다(최대공약수인 12로 나누면 단번에 \(\frac{2}{3}\)).
약수가 바로 떠오르게 되면 약분, 통분, 비를 간단히 하는 계산이 모두 빠르고 정확해집니다. 분수에서 막히는 아이들 중 상당수는 사실 이 약수 감각에서 막혀 있습니다.
과자 120개를 남김없이 같은 개수씩 나누어 줄 수 있는 사람 수는 120의 약수(1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 30, 40, 60, 120)뿐입니다.
학급의 모둠 나누기, 경품 봉투 담기, 비품 똑같이 나누기 등 ‘몇 명(몇 봉투)이면 딱 맞게 나눌 수 있을까’의 후보는 약수를 나열하면 모두 알 수 있습니다.
타일 36장을 남김없이 직사각형으로 늘어놓는 방법은 약수의 쌍 그 자체입니다. 1×36, 2×18, 3×12, 4×9, 6×6의 5가지입니다.
바닥이나 벽의 타일 배치, 매장의 상품 진열, 행사장 좌석 배치처럼 ‘정해진 개수를 직사각형으로 늘어놓는’ 상황에서는 약수의 쌍이 그대로 배치 방법의 선택지가 됩니다.
14자리 정도라면 순식간에 끝나는 소인수분해도, 수백 자리의 거대한 수가 되면 전 세계의 컴퓨터를 써도 현실적인 시간 안에 끝나지 않습니다. 인터넷에서 널리 쓰여 온 RSA 암호는 이 ‘큰 수의 소인수분해는 사실상 불가능하다’는 점을 안전성의 바탕으로 삼고 있습니다.
온라인 쇼핑에서 카드 번호를 보낼 때 여러분의 정보를 지키는 구조의 뿌리에 이 페이지의 소인수분해가 있습니다.
맞물리는 두 톱니바퀴의 톱니 수에 공통인 약수가 있으면 같은 톱니끼리 여러 번 같은 상대와 맞닿기 때문에 마모나 흠집이 특정 톱니에 몰리기 쉽습니다. 그래서 기계 설계에서는 톱니 수끼리 1 말고는 공통인 약수가 없는(서로소인) 조합을 고르는 방법을 자주 씁니다.
자동차의 변속기부터 손목시계까지 ‘약수가 있느냐 없느냐’가 제품의 수명과 관련된 설계 요소가 됩니다.
공식과 그림
용어·기호 해설
기호
| \(N\) | 엔 | 약수를 구할 자연수입니다(예: 120). |
| \(A,\ B\) | 에이, 비 | 곱하면 \(N\)이 되는 쌍의 약수입니다(예: \(120 = 4 \times 30\)의 4와 30). |
| \(p,\ q,\ r\) | 피, 큐, 알 | 소인수분해에 나오는 소수(소인수)입니다(예: \(120 = 2^3 \times 3 \times 5\)의 2, 3, 5). |
| \(a,\ b,\ c\) | 에이, 비, 시 | 소인수분해에서 각 소수를 곱하는 횟수(지수)입니다. 약수의 개수 공식에서는 여기에 1을 더한 수를 모두 곱합니다(예: \(120 = 2^3 \times 3 \times 5\)라면 2를 곱하는 횟수 \(a = 3\), 3과 5를 곱하는 횟수는 \(b = c = 1\)). |
| \(2^{3}\) | 2의 세제곱 | 2를 3번 곱한 값입니다(\(2 \times 2 \times 2 = 8\)). 오른쪽 위의 작은 수(지수)가 곱하는 횟수를 나타냅니다. |
| \(d(N)\) | 디 엔 | \(N\)의 약수의 개수입니다. d는 약수를 뜻하는 영어 divisor의 머리글자입니다(예: \(d(120) = 16\)). |
| \(\sqrt{N}\) | 루트 엔 | 제곱하면 \(N\)이 되는 수(제곱근)입니다. 약수의 쌍은 반드시 한쪽이 \(\sqrt{N}\) 이하이므로, 약수를 찾을 때는 여기까지만 조사하면 충분합니다. |
용어
| 약수 | 어떤 정수를 나누어떨어지게 하는(나머지가 생기지 않는) 자연수입니다. 예를 들어 30의 약수는 1, 2, 3, 5, 6, 10, 15, 30의 8개입니다. 1과 그 수 자신은 어떤 수든 반드시 약수가 됩니다. |
| 배수 | 어떤 정수를 1배, 2배, 3배, …한 수입니다. 약수와 배수는 앞뒷면 관계여서 ‘4는 120의 약수’와 ‘120은 4의 배수’는 같은 것을 말합니다. |
| 소수 | 1과 그 수 자신 말고는 약수가 없는 2 이상의 정수입니다(소수점이 있는 ‘소수’와는 다른 말). 작은 것부터 2, 3, 5, 7, 11, 13, …으로 끝없이 이어집니다. 1은 소수에 넣지 않습니다. |
| 합성수 | 소수가 아닌 2 이상의 정수입니다. 약수가 3개 이상이고, 소수의 곱으로 분해할 수 있습니다(1은 소수도 합성수도 아닙니다). |
| 소인수 | 어떤 정수를 나누어떨어지게 하는 소수입니다. 예를 들어 120의 소인수는 2, 3, 5의 3가지입니다. |
| 소인수분해 | 정수를 소수만의 곱으로 나타내는 것입니다. 예: \(120 = 2 \times 2 \times 2 \times 3 \times 5\). 분해하는 방법은 (곱하는 순서를 빼면) 단 한 가지로 정해집니다. |
| 인수 | 자연수 a가 a = b × c처럼 곱으로 나타날 때 b와 c를 a의 인수라고 합니다. 자연수에서는 약수와 같은 것을 가리키며, ‘소인수(인수 중 소수인 것)’, ‘인수분해’라는 말에 쓰입니다. 영어 factor의 번역어입니다. |
| 제곱수 | 같은 정수를 두 번 곱해서 만든 수입니다. 예: \(36 = 6 \times 6\), \(3600 = 60 \times 60\). 제곱수의 약수의 개수는 (같은 수끼리의 쌍을 한 번만 세므로) 반드시 홀수가 됩니다. |
| 거듭제곱 | 같은 수를 여러 번 곱하는 계산입니다. \(2^3\)처럼 오른쪽 위에 작게 쓴 수(지수)가 곱하는 횟수를 나타냅니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘뜻을 이해하고’ 쓸 수 있도록 먼저 알아 두면 좋은 내용을 정리했습니다.
| 곱셈구구와 나눗셈(초등학교 2~3학년, 7~9세) |
|
| 약수와 배수(초등학교 5학년, 10~11세) |
|
| 소수와 소인수분해(중학교 1학년, 12~13세) |
|
| 거듭제곱과 지수(중학교 1학년, 12~13세) |
|
Excel로 계산하는 방법
| 약수를 구할 수 N | 120 |
| 약수인지 확인할 수 A | 4 |
| N ÷ A의 나머지(0이면 약수) | =MOD(B1,B2) |
| 짝이 되는 약수 B(나머지가 0일 때) | =B1/B2 |
| 소인수 1 | 2 |
| 소인수 2 | 2 |
| 소인수 3 | 2 |
| 소인수 4 | 3 |
| 소인수 5 | 5 |
| 모두 곱한 값(처음 수로 돌아오면 정답) | =PRODUCT(B1:B5) |
| 소수 p를 곱하는 횟수 a | 3 |
| 소수 q를 곱하는 횟수 b | 1 |
| 소수 r을 곱하는 횟수 c | 1 |
| 약수의 개수 d(N) | =(B1+1)*(B2+1)*(B3+1) |
두 번째 표는 소인수분해의 검산입니다. PRODUCT(B1:B5)는 B1부터 B5까지 모두 곱하는 함수로, B6에 120이 나오면 분해가 맞았음을 확인할 수 있습니다(소인수가 5개보다 적은 수는 남는 칸에 1을 넣어 주세요).
세 번째 표는 약수의 개수 공식으로, B4에 (3+1)×(1+1)×(1+1) = 16이 표시됩니다.
Google 스프레드시트로 계산하는 방법
| 약수를 구할 수 N | 120 |
| 약수인지 확인할 수 A | 4 |
| N ÷ A의 나머지(0이면 약수) | =MOD(B1,B2) |
| 짝이 되는 약수 B(나머지가 0일 때) | =B1/B2 |
| 소인수 1 | 2 |
| 소인수 2 | 2 |
| 소인수 3 | 2 |
| 소인수 4 | 3 |
| 소인수 5 | 5 |
| 모두 곱한 값(처음 수로 돌아오면 정답) | =PRODUCT(B1:B5) |
| 소수 p를 곱하는 횟수 a | 3 |
| 소수 q를 곱하는 횟수 b | 1 |
| 소수 r을 곱하는 횟수 c | 1 |
| 약수의 개수 d(N) | =(B1+1)*(B2+1)*(B3+1) |
Python으로 계산하는 방법
n = 120 # 약수를 구할 자연수
divisors = [] # 약수 목록
pairs = [] # 곱하면 n이 되는 약수의 쌍
i = 1
while i * i <= n: # √n까지의 수로 나누어 보면 모두 찾을 수 있다
if n % i == 0: # 나머지가 0이면 i는 약수
divisors.append(i)
if i != n // i: # 짝이 되는 수도 약수(제곱수의 6×6 같은 중복은 넣지 않는다)
divisors.append(n // i)
pairs.append((i, n // i))
i += 1
divisors.sort()
prime_factors = [] # 소인수분해(작은 소수부터 나누어떨어지는 만큼 계속 나눈다)
rest = n
p = 2
while p * p <= rest:
while rest % p == 0:
prime_factors.append(p)
rest = rest // p
p += 1
if rest > 1:
prime_factors.append(rest) # 마지막에 남은 수도 소인수
print(f"{n}의 약수({len(divisors)}개): {divisors}")
print(f"약수의 쌍: {pairs}")
if len(prime_factors) >= 2:
print(f"소인수분해: {n} = {' × '.join(map(str, prime_factors))}")
elif len(prime_factors) == 1:
print(f"{n}: 소수입니다")
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
N = A × B
N = A \times B
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mi>A</mi>
<mo>×</mo>
<mi>B</mi>
</mrow>
</math>
N = A xx B
A*B
N := A*B;
N = A*B;
N = A × B
N = pᵃ × qᵇ × rᶜ × …
N = p^{a} \times q^{b} \times r^{c} \times \cdots
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<msup><mi>p</mi><mi>a</mi></msup>
<mo>×</mo>
<msup><mi>q</mi><mi>b</mi></msup>
<mo>×</mo>
<msup><mi>r</mi><mi>c</mi></msup>
<mo>×</mo>
<mo>⋯</mo>
</mrow>
</math>
N = p^a xx q^b xx r^c xx cdots
p^a*q^b*r^c
N := p^a*q^b*r^c;
N = p^a*q^b*r^c;
N = p^a × q^b × r^c × …
d(N) = (a + 1)(b + 1)(c + 1) …
d(N) = (a+1)(b+1)(c+1)\cdots
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>d</mi><mo>(</mo><mi>N</mi><mo>)</mo>
<mo>=</mo>
<mo>(</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo>
<mo>(</mo><mi>b</mi><mo>+</mo><mn>1</mn><mo>)</mo>
<mo>(</mo><mi>c</mi><mo>+</mo><mn>1</mn><mo>)</mo>
<mo>⋯</mo>
</mrow>
</math>
d(N) = (a+1)(b+1)(c+1) cdots
(a + 1)*(b + 1)*(c + 1)
d := (a + 1)*(b + 1)*(c + 1);
d = (a + 1)*(b + 1)*(c + 1);
d(N) = (a+1)(b+1)(c+1)…
ChatGPT 에게 물어서 계산하는 방법
당신은 정수 계산 도우미입니다. 다음 계산을 반드시 Python 코드를 실제로 실행해서 하고, 실행 결과의 수치만을 근거로 답해 주세요(암산이나 추측으로 답하지 마세요). 120에 대해 다음 값을 각각 구해 주세요. 1. 약수를 작은 순서대로 모두 나열하고 개수도 센다 2. 곱하면 120이 되는 약수의 쌍을 모두 든다 3. 소인수분해한다(2 × 2 × 2 × 3 × 5 같은 꼴) 4. 약수의 개수 공식(각 소수를 곱하는 횟수에 1을 더해 모두 곱한다)으로 1번의 개수와 같은지 검산한다 계산에 쓴 코드와 실행 결과를 보여 주세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다