def primeFactor(num):
i = 2
while i <= num:
if num % i == 0:
print(f'소인수 : {i}')
#
# if num == i:
# break
num = num // i
else:
i += 1
num = int(input('1보다 큰 정수 입력 : '))
primeFactor(num)
def minSquareFactor(num):
factors = []
i = 2
while i <= num:
if num % i == 0:
print(f'소인수 : {i}')
if i in factors:
factors.pop()
else:
factors.append(i)
num = num // i
else:
i += 1
return factors[0]
num = int(input('1보다 큰 정수 입력 : '))
print(f'가장 작은 정수 : {minSquareFactor(num)}')
def maxCommonDivisor(n1, n2):
maxDivisor = 0
for i in range(1, n1 + 1):
if n1 % i == 0 and n2 % i == 0:
print(f'공약수 : {i}')
maxDivisor = i
return maxDivisor
'''
# 유클리드 호제법
n1 % n2 = v1
n2 % v1 = v2
v1 % v2 = v3
v2 % v3 = 0 #최대공약수는 v3
'''
def euclidean(n1, n2): # 내가 생각한 방식
while True:
if n1 % n2 == 0:
return n2
else:
# print(f'{n2} % {n1 % n2} = {n2 % (n1 % n2)} ')
return euclidean(n2, n1 % n2)
def euclidean2(n1, n2):
temp1 = n1
temp2 = n2
while temp2 > 0:
temp = temp2
temp2 = temp1 % temp2
temp1 = temp
return temp1
n1 = int(input('1보다 큰 정수 입력 : '))
n2 = int(input('1보다 큰 정수 입력 : '))
maxCommonDivisor(n1, n2)
print(euclidean2(n1, n2))
def minMultiple(n1, n2):
max = 0
for i in range(1, n1 + 1):
if n1 % i == 0 and n2 % i == 0:
print(f'공약수 : {i}')
max = i
# 최소공배수 = (n1 * n2) // 최대공약수
print(f'최소공배수 : {(n1 * n2 // max)}')
def tripleMultiple(n1, n2, n3):
maxDiv = 0
minMul1 = 0
minMul2 = 0
# n1과 n2의 최소공배수 구하기
for i in range(1, n1 + 1):
if n1 % i == 0 and n2 % i == 0:
maxDiv = i
minMul1 = n1 * n2 // maxDiv
print(f'{n1}, {n2}의 최소공배수 : {minMul1}')
# n3과 (n1,n2)의 최소공배수 구하기
for i in range(1, n3 + 1):
if n3 % i == 0 and minMul1 % i == 0:
maxDiv = i
minMul2 = n3 * minMul1 // maxDiv
print(f'{n3}, {minMul1}의 최소공배수 : {minMul2}')
return minMul2
n1 = int(input('1보다 큰 정수 입력 : '))
n2 = int(input('1보다 큰 정수 입력 : '))
n3 = int(input('1보다 큰 정수 입력 : '))
minMultiple(n1, n2)
tripleMultiple(n1, n2, n3)
print(f'2진수 : {bin(30)}')
print(f'2진수 : {format(30, "b")}')
print(f'8진수 : {oct(30)}')
print(f'8진수 : {format(30, "o")}')
print(f'16진수 : {hex(30)}')
print(f'16진수 : {format(30, "x")}')
# x진수->10진수
b = bin(30)
print(f'{bin(30)} -> {format(int(bin(30), 2))}')
print(f'{oct(30)} -> {format(int(oct(30), 8))}')
print(f'{hex(30)} -> {format(int(hex(30), 16))}')
💡result
2진수 : 0b11110
2진수 : 11110
8진수 : 0o36
8진수 : 36
16진수 : 0x1e
16진수 : 1e
0b11110 -> 30
0o36 -> 30
0x1e -> 30
def arith_sequence(a1, n, d):
for i in range(1, n + 1):
val = a1 + (i - 1) * d
print(f'{i}번쟤 항의 값 : {val}')
a1 = int(input('a1 입력 : '))
n = int(input('n 입력 : '))
d = int(input('공차 : '))
arith_sequence(a1, n, d)
# 등차 수열의 합
def sumArithSequence(a1, n, d):
last = a1 + (n - 1) * d
sum = (a1 + last) * n / 2
print(f'{n}번째 항까지의 값 : {sum}')
a1 = int(input('a1 입력 : '))
n = int(input('n 입력 : '))
d = int(input('공차 : '))
sumArithSequence(a1, n, d)
# 등비 수열
def geoSequence(a1, n, r):
val = a1 * (r ** (n - 1))
print(f'{n}항의 값 : {val}')
a1 = int(input('a1 입력 : '))
n = int(input('n 입력 : '))
r = int(input('공비 : '))
geoSequence(a1, n, r)
# 등비 수열이 합
def sumGeoSequence(a1, n, r):
last = (a1 * (1 - (r ** n))) / (1 - r)
print(f'{n}번째 항까지의 값 : {last} ')
a1 = int(input('a1 입력 : '))
n = int(input('n 입력 : '))
r = int(input('공비 : '))
sumGeoSequence(a1, n, r)