약수: 어떤 수를 나누어떨어지게 하는 수!
소수: 1과 그 수 자신만을 약수로 가지는 수!
userNum = int(input('0보다 큰 정수 입력: '))
for i in range(1, userNum+1):
if userNum % i == 0:
print(f'{userNum}의 약수: {i}')
userNum = int(input('0보다 큰 정수 입력: '))
for i in range(2, userNum+1):
flag = True
for n in range(2, i):
if i % n == 0:
flag = False
if flag:
print(f'{i} : 소수')
else:
print(f'{i} : 합성수')
- 소인수: 약수(인수) 중에서 소수인 숫자
- 소인수분해: 1보다 큰 정수를 소인수의 곱으로 나타낸 것 (ex: 20 = 2^2 x 5)
- 소인수분해를 이용해서 약수를 정확하고 쉽게 구할 수 있음
userNum = int(input('1보다 큰 정수 입력: '))
n = 2
while userNum >= n:
if userNum % n == 0:
print(f'소인수: {n}')
userNum /= n
else:
n += 1
userNum = int(input('1보다 큰 정수 입력: '))
n = 2
numList = []
while userNum >= n:
if userNum % n == 0: #소인수 찾기
if numList.count(n) == 0: #리스트에 없는 소인수는 하나 추가해주기
numList.append(n)
elif numList.count(n) == 1: #리스트에 한개 있던 소인수를 또 찾으면 원래 있던 걸 지워버리기
numList.remove(n)
userNum /= n
else:
n += 1
print(numList)
- 공약수: 두 개 이상의 수에서 공통된 약수
- 최대공약수: 공약수 중 가장 큰 수
userNum1 = int(input('1보다 큰 정수 입력: '))
userNum2 = int(input('1보다 큰 정수 입력: '))
commonList = []
maxCommon = 1
if userNum1 <= userNum2:
for i in range(1, userNum1+1):
if userNum1 % i == 0 and userNum2 % i == 0:
commonList.append(i)
maxCommon = i
print(f'{userNum1}과 {userNum2}의 공약수: {commonList}')
print(f'{userNum1}과 {userNum2}의 최대공약수: {maxCommon}')
else:
print(f'두번째 숫자가 첫번째 숫자보다 작습니다')
- 공배수: 두 개 이상의 수에서 공통된 배수
- 최소공배수: 공배수 중 가장 작은 수
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
maxNum = 1
divisorList = []
for i in range(1, num1+1):
if num1 % i == 0 and num2 % i == 0:
divisorList.append(i)
maxNum = i
minNum = int((num1*num2) / maxNum)
print(f'공약수: {divisorList}')
print(f'최대공약수: {maxNum}')
print(f'최소공배수: {minNum}')
ship1 = 6
ship2 = 8
ship3 = 10
maxNum = 1 #최대공약수
for i in range(1,ship1+1):
if ship1 % i == 0 and ship2 % i == 0:
maxNum = i
minDay = int((ship1*ship2)/maxNum) #최소공배수
for n in range(1, minDay+1):
if ship3 % n == 0 and minDay % n == 0:
maxNum = n
minDay = int((ship3 * minDay) / maxNum)
print(minDay)