해당 글은 제로베이스데이터스쿨 학습자료를 참고하여 작성되었습니다
- 해당 수를 나누었을 때 나머지가 0인 수
ex) 8의 약수 : 1, 2, 4, 8
📝입력
inputNum = int(input('0보다 큰 정수 입력: '))
for num in range(1, inputNum + 1):
if inputNum % num == 0:
print('{}의 약수: {}'.format(inputNum, num))
🧾출력
0보다 큰 정수 입력: 10
10의 약수: 1
10의 약수: 2
10의 약수: 5
10의 약수: 10
- 1과 자신만을 약수로 갖는 수(단, 1을 제외)
ex) 15이하의 소수 : 2, 3, 5, 7, 11, 13
📝입력
inputNum = int(input('0보다 큰 정수 입력: '))
for num in range(2, inputNum + 1):
flag = True
for n in range(2, num):
if num % n == 0:
flag = False
break
if flag:
print(f'{num} : 소수')
else:
print(f'{num} : \t 합성수')
🧾출력
0보다 큰 정수 입력: 10
2 : 소수
3 : 소수
4 : 합성수
5 : 소수
6 : 합성수
7 : 소수
8 : 합성수
9 : 합성수
10 : 합성수
- 소인수 : 약수 중에서 소수인 숫자
ex) 12의 소인수 : 2, 3
(출처:제로베이스데이터스쿨)
- 소인수분해 : 1보다 큰 정수를 소인수의 곱으로 표현한 것
ex) 20의 소인수 분해 : 20 = 2^2 * 5- 소인수분해를 통해서 약수를 쉽게 구할 수 있음
(출처:제로베이스데이터스쿨)
📝입력
userNum = int(input('1보다 큰 정수 입력 : '))
n = 2
while n <= userNum:
if userNum % n == 0:
print('소인수: {}'.format(n))
userNum /= n
else:
n += 1
🧾출력
1보다 큰 정수 입력 : 20
소인수: 2
소인수: 2
소인수: 5
- 두개 이상의 수에서 공통된 약수
(출처:제로베이스데이터스쿨)
📝입력
n1 = int(input('1보다 큰 정수 입력: '))
n2 = int(input('1보다 큰 정수 입력: '))
maxNum = 0
for i in range(1, min(n1, n2) + 1):
if n1 % i == 0 and n2 % i == 0:
print(f'공약수: {i}')
maxNum = i
print(f'최대공약수: {maxNum}')
print()
import math
print('모듈사용')
print(f'math.gcd({n1}, {n2}) : {math.gcd(n1, n2)}')
🧾출력
1보다 큰 정수 입력: 12
1보다 큰 정수 입력: 36
공약수: 1
공약수: 2
공약수: 3
공약수: 4
공약수: 6
공약수: 12
최대공약수: 12
모듈사용
math.gcd(12, 36) : 12
(출처:제로베이스데이터스쿨)
📝입력
n1 = int(input('1보다 큰 정수 입력: '))
n2 = int(input('1보다 큰 정수 입력: '))
x = n1; y = n2
while y > 0:
temp = y
y = x % y
x = temp
print('{}, {}의 최대공약수: {}'.format(n1, n2, x))
for n in range(1, x + 1):
if x % n == 0:
print('{}, {}의 공약수: {}'.format(n1, n2, n))
🧾출력
1보다 큰 정수 입력: 12
1보다 큰 정수 입력: 36
12, 36의 최대공약수: 12
12, 36의 공약수: 1
12, 36의 공약수: 2
12, 36의 공약수: 3
12, 36의 공약수: 4
12, 36의 공약수: 6
12, 36의 공약수: 12
- 두 개 이상의 수에서 공통된 배수
(출처:제로베이스데이터스쿨)
📝입력
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
maxNum = 0
for i in range(1, num1 + 1):
if num1 % i == 0 and num2 % i == 0:
print('공약수: {}'.format(i))
maxNum = i
print(f'최대공약수: {maxNum}')
minNum = (num1 * num2) // maxNum
print(f'최소공배수: {minNum}')
🧾출력
1보다 큰 정수 입력: 15
1보다 큰 정수 입력: 33
공약수: 1
공약수: 3
최대공약수: 3
최소공배수: 165
최대공약수와 최소공배수만 구한다면 함수를 활용하면 된다
단, 파이썬의 버전이 낮으면 작동하지 않을 수 있다
math.gcd() = 최대공약수
math.lcm() = 최소공배수
📝입력
import math
fruit = 10
fish = 24
vegetable = 30
print(f'최대공약수: {math.gcd(fruit, fish, vegetable)}')
print(f'최소공배수: {math.lcm(fruit, fish, vegetable)}')
🧾출력
최대공약수: 2
최소공배수: 120
- 특정 숫자 몇 개를 사용하여 수를 표시하는 방법
(출처:제로베이스데이터스쿨)
📝입력
dNum = 30
print('2진수: {}'.format(bin(dNum)))
print('8진수: {}'.format(oct(dNum)))
print('16진수: {}'.format(hex(dNum)))
🧾출력
2진수: 0b11110
8진수: 0o36
16진수: 0x1e
📝입력
dNum = 30
print('2진수: {}'.format(format(dNum, '#b')))
print('8진수: {}'.format(format(dNum, '#o')))
print('16진수: {}'.format(format(dNum, '#x')))
print()
print('{0:#b}, {0:#o}, {0:#x}'.format(dNum))
🧾출력
2진수: 0b11110
8진수: 0o36
16진수: 0x1e
0b11110, 0o36, 0x1e
📝입력
dNum = 30
print('2진수: {}'.format(format(dNum, 'b')))
print('8진수: {}'.format(format(dNum, 'o')))
print('16진수: {}'.format(format(dNum, 'x')))
🧾출력
2진수: 11110
8진수: 36
16진수: 1e
📝입력
print('2진수(0b11110): 10진수({})'.format(int('0b11110', 2)))
print('8진수(0o36): 10진수({})'.format(int('0o36', 8)))
print('16진수(0x1e): 10진수({})'.format(int('0x1e', 16)))
🧾출력
2진수(0b11110): 10진수(30)
8진수(0o36): 10진수(30)
16진수(0x1e): 10진수(30)