약수
어떤 수를 나누어 떨어지게 하는 수ex) 12의 약수는 1, 2, 3, 6, 12
파이썬을 이용해서 사용자가 입력한 숫자의 약수를 출력해보자.
num = int(input('0보다 큰 정수 입력: '))
for i in range(1,num+1):
if num % i == 0 : # 나누어 떨어지면 약수이다.
print(f'{num}의 약수: {i}')
소수
1과 자신만을 약수로 가지는 수 (단, 1은 제외)ex) 2, 3, 5, 7, 11, ...등이 소수이다
파이썬을 이용해서 사용자가 입력한 숫자까지의 소수를 출력해보자.
num = int(input('0보다 큰 정수 입력: '))
prime = True
for i in range(2,num+1):
for j in range(2,i):
if i % j == 0 :
prime = False
break
else :
prime = True
if prime:
print(f'{i} : 소수!')
else :
print(f'{i} : 합성수!')
소인수
약수 중에서 소수인 숫자
ex) 12의 약수는 1, 2, 3, 6, 12 이 중에서 소인수는 2, 3
소인수분해
1보다 큰 정수를 소인수의 곱으로 나타낸 것
ex) 20을 소인수분해 하면 2x2x5
파이썬을 이용해서 사용자가 입력한 수를 소인수 분해하자.
num = int(input('1보다 큰 정수 입력: '))
while True:
if num == 1 :
break
for i in range (2,num+1):
if num % i == 0 :
print(f'소인수: {i}')
num /= i
num = int(num)
break
공약수
두 개 이상의 수에서 공통된 약수
ex) 12와 18의 공약수 1, 2, 3, 6
최대공약수
공약수 중 가장 큰 수
ex) 12와 18의 최대공약수 6
두 개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성하자.
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
gcd = 1
for i in range(1,min(num1,num2)+1):
if num1 % i ==0 and num2 % i == 0 :
print(f'공약수: {i}')
gcd = i
print(f'최대공약수: {gcd}')
공배수
두 개 이상의 수에서 공통된 배수
ex) 12와 18의 공배수 36, 72, 108, ...
최소공배수
공배수 중 가장 작은 수
ex) 12와 18의 최소공배수 36
세 개의 수를 입력하면 최소공배수를 출력하는 코드를 작성하자.
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
num3 = int(input('1보다 큰 정수 입력: '))
mult = max(num1, num2, num3)
while True:
if mult % num1 ==0 and mult % num2 ==0 and mult % num3 ==0:
lcm = mult
break
else:
mult += 1
continue
print(f'최소공배수: {lcm}')
진법
진법이란, 특정 숫자 몇 개를 사용하여 수를 표시하는 방법이다.
ex) 2진법 (0과 1만 사용), 4진법 (0,1,2,3만 사용)
10진수에서 다른 진수로 변환하는 방법
dNum = 37
print('2진수: {}'.format(bin(dNum)) # 10진수에서 2진수로 표현
print('8진수: {}'.format(oct(dNum)) # 10진수에서 8진수로 표현
print('16진수: {}'.format(hex(dNum)) # 10진수에서 16진수로 표현
2진수: 0b100101 8진수: 0o45 16진수: 0x25
표현되는 숫자들은 전부 string로 반환된다.
그러면 반대로 2진수, 8진수, 16진수를 10진수로 바꿀 때는
print(int('0b100101',2))
print(int('0o45',8))
print(int('0x25',16))
37 37 37