약수
어떤 수를 나누어 나머지 없이 떨어지게 하는 수
2 2 ÷ 1 = 2 2 ÷ 2 = 1
|
3 3 ÷ 1 = 3 3 ÷ 3 = 1
|
8 8 ÷ 1 = 8 8 ÷ 2 = 4 8 ÷ 4 = 2 8 ÷ 8 = 1 |
9 9 ÷ 1 = 9 9 ÷ 3 = 3 9 ÷ 9 = 1
|
2의 약수: 1, 2
|
3의 약수: 1, 3
|
8의 약수: 1, 2, 4, 8
|
9의 약수: 1, 3, 9
|
15 15 ÷ 1 = 15 15 ÷ 3 = 5 15 ÷ 5 = 3 15 ÷ 15 = 1
|
22 22 ÷ 1 = 22 22 ÷ 2 = 11 22 ÷ 11 = 2 22 ÷ 22 = 1
|
104 104 ÷ 1 = 104 104 ÷ 2 = 52 104 ÷ 4 = 26 104 ÷ 8 = 13 104 ÷ 13 = 8 … |
|
15의 약수: 1, 3, 5, 15
|
22의 약수: 1, 2, 11, 22
|
104의 약수: 1, 2, 4, 8, 13, 26, 52, 104 |
|
파이썬 이용
사용자가 입력한 숫자의 약수를 출력해보자.
# 나머지가 0인 숫자 찾기
inputNumber = int(input('0보다 큰 정수 입력: '))
for num in range(1, (inputNumber + 1)):
if inputNumber % num == 0: #나머지가 0일때
print('{}의 약수: {}'.format(inputNumber, num))
-- 출력 -- |
0보다 큰 정수 입력: 30 30의 약수: 1 30의 약수: 2 30의 약수: 3 30의 약수: 5 30의 약수: 6 30의 약수: 10 30의 약수: 15 30의 약수: 30
|
소수
1과 자신 이외의 어떤 수로도 나머지 없이 떨어지게 나누어지지 않는 수
1과 그 수 자신만을 약수로 가지는 수
단, 1은 소수에서 제외한다.
2 2 ÷ 1 = 2 2 ÷ 2 = 1
|
3 3 ÷ 1 = 3 3 ÷ 3 = 1
|
4 4 ÷ 1 = 2 4 ÷ 2 = 2 4 ÷ 4 = 1 |
5 5 ÷ 1 = 5 5 ÷ 5 = 1
|
2의 약수: 1, 2 2는 소수이다.
|
3의 약수: 1, 3 3는 소수이다.
|
4의 약수: 1, 2, 4 4는 소수가 아니다.
|
5의 약수: 1, 5 5는 소수이다.
|
7 7 ÷ 1 = 7 7 ÷ 7 = 1 |
11 11 ÷ 1 = 11 11 ÷ 11 = 1
|
13 13 ÷ 1 = 13 13 ÷ 13 = 1 |
17 17 ÷ 1 = 17 17 ÷ 17 = 1 |
7의 약수: 1, 7 7는 소수이다.
|
11의 약수: 1, 11 11는 소수이다.
|
13의 약수: 1, 13 13는 소수이다. |
17의 약수: 1, 17 17는 소수이다. |
[실습]
1부터 30까지의 숫자 중 5로 나눈 몫과 나머지가 모두 소수인 숫자들을 찾아보자.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
↓
- 조건에 맞는 몫 구하기 : 5로 나누었을때 몫으로 나올 수 있는 소수를 찾는다.
2, 3, 5
- 조건에 맞는 나머지 구하기 : 5보다 작은 소수를 찾는다. (5로 나눈 후의 나머지이니까..)
2, 3
- 조건에 맞는 값 구하기 : [ 5 x 몫 ]에 나머지를 더한다.
5 x 2 + 2 = 12
5 x 2 + 3 = 13
5 x 3 + 2 = 17
5 x 3 + 3 = 18
5 x 5 + 2 = 27
5 x 5 + 3 = 28
↓
[실습]
1부터 30까지의 숫자 중 소수를 찾아보자.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
↓
- 1제외
- 2는 소수
- 2를 제외한 2의 배수 제거
- 3은 소수
- 3을 제외한 3의 배수 제거
- 5는 소수
- 5를 제외한 5의 배수 제거
- 7은 소수
- 7을 제외한 7의 배수 제거
- 11은 소수
- 11을 제외한 11의 배수 제거
- …
↓
2 |
3 |
5 |
7 |
11 |
13 |
17 |
19 |
23 |
29 |
파이썬 이용
파이썬을 이용해서 사용자가 입력한 숫자까지의 소수를 출력해보자.
inputNumber = int(input('0보다 큰 정수 입력: '))
for num in range(2, (inputNumber + 1)): #입력한 숫자까지의 숫자
flag = True
for n in range(2, num):
if num % n == 0: #1과 자신이외에 약수가 하나라도 있으면 소수가 아니기 때문에
flag = False
break
if (flag):
print('{} : 소수'.format(num))
else:
print('{} : 합성수'.format(num)) #소수의 반대말
-- 출력 -- |
0보다 큰 정수 입력: 10 2 : 소수 3 : 소수 4 : 합성수 5 : 소수 6 : 합성수 7 : 소수 8 : 합성수 9 : 합성수 10 : 합성수 |
합성수
약수가 1과 자신이외에 더 있어서 3개 이상인 수
소수의 반대