약수 : 어떤 수를 나누어떨어지게 하는 수
소수 : 1과 자신만을 약수로 가지는 수(단, 1은 제외)
합성수 : 소수의 반대 개념. 1과 자신 외의 다른 약수를 가지는 수
파이썬을 이용하여 사용자의 입력을 받아 숫자의 약수를 구해보자.
inputNumber = int(input("0보다 큰 정수 입력: "))
for number in range(1, (inputNumber+1)):
if inputNumber % number == 0:
print('{}의 약수: {}'.format(inputNumber, number))
파이썬을 이용하여 사용자가 입력한 숫자까지의 소수를 구해보자.
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('{} : 합성수'.format(number))
소인수 : 소수와 인수(약수)를 합친 말로, 약수(인수) 중에서 소수인 숫자
소인수분해 : 1보다 큰 정수를 소인수의 곱으로 나타낸 것. 소인수분해를 통해 약수를 찾을 수 있음.
파이썬을 이용해서 사용자가 입력한 수를 소인수분해 해보자.
inputNumber = int(input('1보다 큰 정수 입력: '))
n = 2
while n <= inputNumber:
if inputNumber % n == 0:
print('소인수 : {}'.format(n))
inputNumber /= n
else:
n += 1
72에 x를 곱하면 y의 제곱이 된다고 할 때, x에 해당하는 가장 작은 정수를 구해보자.
inputNumber = int(input('1보다 큰 정수 입력: '))
n = 2
searchNumbers = []
while n <= inputNumber:
if inputNumber % n == 0:
print('소인수 : {}'.format(n))
if searchNumbers.count(n): #n의 개수 확인
searchNumbers.append(n)
elif searchNumbers.count(n) == 1:
searchNumbers.remove(n) #이미 제곱형태이므로, 무시하기 위해 remove
inputNumber /= n
else:
n += 1
print('searchNumbers: {}'.format(searchNumbers))
공약수 : 두 개 이상의 수에서 공통된 약수
최대공약수 : 공약수 중 가장 큰 수. 소수로 나눗셈하여 편리하게 최대공약수를 구할 수 있음.
두개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성해보자.
단, 두 번째 입력하는 숫자가 첫 번째 입력하는 숫자보다 크다고 가정한다.
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('최대공약수 : {}'.foramt(maxNum))
세 개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성해보자.
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('공약수: {}'.format(i))
maxNum = i
print('최대공약수 : {}'.format(maxNum))
공배수 : 두 개 이상의 수에서 공통된 배수
최소공배수 : 공배수 중 가장 작은 수
두 개의 수를 입력하면 최소공배수를 출력하는 코드를 작성해보자.
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('최대공약수 : {}'.format(maxNum))
minNum = (num1 * num2) // maxNum
print('최소공배수 : {}'.format(minNum))
세 개의 수를 입력하면 최소공배수를 출력하는 코드를 작성해보자.
# 1. 두 개의 수에 대한 최소공배수를 구한다
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:
print('공약수: {}'.format(i))
maxNum = i
print('최대공약수 : {}'.format(maxNum))
minNum = (num1 * num2) // maxNum
print('{}, {}의 최소공배수 : {}'.format(num1, num2, minNum))
# 2. 세 번째 수의 공배수를 구한다
newNum = minNum
for i in range(1, (newNum+1)):
if newNum % i == 0 and num3 % i == :
maxNum = i
print('최대공약수 : {}.format(maxNum))
minNum = (newNum * num3) // maxNum
print('{}, {}, {}의 최소공배수 : {}'.format(num1, num2, num3, minNum))
섬마을에 과일, 생선, 야채를 판매하는 배가 다음 주기로 입항한다고 할 때, 모든 배가 입항하는 날짜를 계산해 보자.
과일 선박: 3일 주기 / 생선 선박: 4일 주기 / 야채 선박: 5일 주기
ship1 = 3; ship2 = 4; ship3 = 5;
maxDay = 0
for i in range(1, ship1+1)):
if ship1 % i == 0 and ship2 % i == 0:
maxDay = i
print('최대공약수 : {}.format(maxDay))
minDay = (ship1 * ship2) // maxDay
print('{}, {}의 최소공배수 : {}'.format(ship1, ship2, minDay))
newDay = minDay
for i in range(1, (newDay+1)):
if newDay % i == 0 and ship3 % i == 0:
maxDay = i
print('최대공약수 : {}.format(maxDay))
minDay = (newDay * ship3) // maxDay
print('{}, {}, {}의 최소공배수 : {}'.format(ship1, ship2, ship3, minDay))
```