## 약수 구하기!
inputNumber = int(input('0보다 큰 정수 입력: '))
for number in range(1,inputNumber+1):
if inputNumber % number == 0:
print('{}의 약수: {}'.format(inputNumber, number))
## 소수 구하기!
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))
# 입력한 정수의 소인수 구하기
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) == 0: # list.count(n) 해당 리스트에 n이 몇개 있는지 반환
searchNumbers.append(n)
elif searchNumbers.count(n) == 1: # 리스트에 하나라도 있으면, x를 구하는 데 있어서는 무시해도 되기 때문에 지워버리는 것.
searchNumbers.remove(n)
inputNumber /= n
else:
n += 1
print('searchNumbers: {}'.format(searchNumbers))
# for문과 유클리드 호제법을 이용해 최대공약수를 구하자
# 유클리드 호제법: x,y의 최대공약수는 y,r(x%y)의 최대공약수와 같다. (r은 x를 y로 나눴을때의 나머지)
# 반복문
num2가 num1보다 크다는 전제
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))
# 반복문이 다 끝나고 나서 maxNum을 출력하면 두 수의 가장 큰 공약수가 남기 때문에 최대공약수가 구해지는 것!
# 유클리드 호제법
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
temp1 = num1
temp2 = num2
while temp2 > 0:
temp = temp2
temp2 = temp1 % temp2
temp1 = temp
print('{}, {}의 최대공약수: {}'.format(num1, num2, te
# 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))
8진수는 0 1 2 3 4 5 6 7 8 9 A B C D E 활용
파이썬을 이용한 진법 변환
# 10진수 -> 2진수, 8진수, 16진수
# 2진수: binary -> bin()
# 8진수: octal -> oct()
# 16진수: hexadecimal -> hex()
# 10진수를 2진수로 변경하는 방법
dNum = 30
print('2진수: {}'.format((bin(dNum)))
# 다른 방법
dNum = 30
print('2진수: {}'.format(format(dNum, '#b')))
print('8진수: {}'.format(format(dNum, '#o')))
print('16진수: {}'.format(format(dNum, '#x')))
# 또 다른 방법
dNum = 30
print('{0:#b}, {0:#o}, {0:#x}'.format(dNum, dNum, dNum))
# x 진수를 10진수로 변경하는 방법
print('2진수(0b11110) -> 10진수({})'.format(int('0b11110', 2)))
print('8진수(0o36) -> 10진수({})'.format(int('0o36', 8)))
print('16진수(0x1e) -> 10진수({})'.format(int('0x1e', 16)))