
약수 : 어떤수를 나누어 떨어지게 하는 수 (나머지가 0인 수)
ex) 3/1 = 3, 3/3 = 1 # 3의 약수 : 1,3
inputNumber = int(input('0보다 큰 정수 입력 : '))
for i in range(1,(inputNumber + 1)):
if inputNumber % i == 0:
print('{}의 약수: {}'.format(inputNumber, i))
소수 : 1과 자신만을 약수로 가지는 수 (1은 제외)
inputNumber = int(input('0보다 큰 정수 입력 : '))
for number in range(2, (inputNumber + 1)):
flag = True
for n in range(2, number):
if number % n == 0:
flag = False
break
if flag:
print('{} : 소수'.format(number))
else:
print('{} : \t합성수'.format(number))
소인수 : 약수(인수)중에서 소수인 숫자 (소수 + 인수(약수))
소인수분해 : 1보다 큰 정수를 소인수의 곱의 형태로 나타낸 것
소인수분해를 이용해 약수를 정확하게 구할 수 있다.
inputNumber = int(input('1보다 큰 정수 입력 : '))
n = 2
while n <= inputNumber:
if inputNumber % n == 0:
print(f'소인수 : {n}')
inputNumber /= n
else:
n += 1
두 개 이상의 수에서 공통된 약수를 공약수라고 한다.
최대공약수 : 공약수 중에 가장 큰 수
# 전제조건: num1이 제일 작은 수
num1 = int(input('1보다 큰 정수 입력 : '))
num2 = int(input('1보다 큰 정수 입력 : '))
num3 = int(input('1보다 큰 정수 입력 : '))
maxNum = 0
for i in range(1, (num1 + 1)):
if num1 % i == 0 and num2 % i == 0 and num3 % i == 0:
print(f'공약수 : {i}')
maxNum = i
print(f'최대 공약수 : {maxNum}')
유클리드 호제법 : x, y의 최대공약수는 y, r(x%y : 나머지)의 최대공약수와 같다.
공배수 : 두 개 이상의 수에서 공통된 배수
최소공배수 : 공통된 배수 중에 가장 작은 수
최소공배수 = (숫자1 * 숫자2) // 최대공약수
# num1 < num2 전제조건
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(f'공약수 : {i}')
maxNum = i
print(f'최대공약수 : {maxNum}')
minNum = (num1 * num2) // maxNum
print(f'최소공배수 : {minNum}')
특정 숫자 몇개를 사용하여 수를 표시하는 방법
2진법 : 0, 1
8진법 : 0, 1, 2, 3, 4, 5, 6, 7
10진법 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
16진법 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F(영문은 소문자도 가능)
2진수: binary bin(), 8진수: octal oct(), 16진수: Hexadecimal hex()
num = 30
print('2진수 : {}'.format(bin(num))) # 타입은 항상 문자열 str
print('8진수 : {}'.format(oct(num)))
print('16진수 : {}'.format(hex(num)))
print('2진수 : {}'.format(format(num, '#b'))) # 타입은 항상 문자열 str
print('8진수 : {}'.format(format(num, '#o'))) (#생략가능)
print('16진수 : {}'.format(format(num, '#x')))
print('{0:#b} {0:#o} {0:#x}'.format(num))
print('2진수(0b11110) -> 10진수({})'.format(int('0b11110', 2)))
print('8진수(0o36) -> 10진수({})'.format(int('0o36', 8)))
print('16진수(0x1e) -> 10진수({})'.format(int('0x1e', 16)))
이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.