약수
어떤 수를 나누어떨어지게 하는 수
소수
1과 자신만을 약수로 가지는 수 (단,1은 제외) ex>2,3,5,7,11
num = int(input('0보다 큰 정수 입력:'))
for i in range(2,num+1):
flag = True
for n in range(2,i):
if i % n == 0:
flag = False
break #중첩반복문을 사용하여 소수 확인가능
if (flag):
print(f'{i}:소수!!')
else:
print(f'{i}:합성수!!')
소인수
소수+인수(약수). 즉 약수인 수 중에서 소수인 숫자를 소인수라고 한다.
소인수분해
1보다 큰 정수를 소인수의 곱으로 나타낸 것을 소인수분해라고 한다. 소수가 나올때까지 계속해서 분해를 하는것이다.
#어떤 한 수에 어떤 수(x)를 곱해야 어떤 수(Y)의 거듭제곱이 될지 알아내는 것.
num = int(input('1보다 큰 정수 입력:'))
searchNumbers = []
n=2
while n<= num:
if num % n == 0:
print(f'소인수:{n}')
if searchNumbers.count(n) == 0: #if~elif 부분을 제거하면 일반적인 소인수분해를 작성한 것.
searchNumbers.append(n)
elif searchNumbers.count(n) == 1:
searchNumbers.remove(n)
num /= n
else:
n+=1
print(searchNumbers)
공약수
두 개 이상의 수에서 공통된 약수
최대 공약수
공약수 중 가장 큰 수
#최대 공약수 구하는 기본 공식
num1 = int(input('1보다 큰 정수 입력:'))
num2 = int(input('1보다 큰 정수 입력:'))
maxNum = 0
for i in range(1,(num1+1)):
if num1 % i == 0 and num2 % 1 == 0:
maxNum = i
print(maxNum)
유클리드 호제법
num1 = int(input('1보다 큰 정수 입력:'))
num2 = int(input('1보다 큰 정수 입력:'))
temp1 = num1; temp2 = num2
while temp2 >0:
temp = temp2
temp2 = temp1%temp2
temp1 = temp
print(temp1)
#temp1자리가 x열 temp2자리가 y열 temp1%temp2는 r열에 해당한다.
공배수
두 개 이상의 수에서 공통된 배수
최소공배수
공배수 중 가장 작은 수
📌 이때 최소공배수는 해당 두 숫자 n1,n2의 최대공약수를 구한 후 (n1*n2)//(최대공약수)를 해주면 최소공배수가 나오게 된다.
->즉, 두 숫자의 곱에서 가장 최대로 겹치는 약수들을 한번 나눠주면 나머지 공배수들(거듭제곱을 제외한 큰 지수들)이 남기때문이다.
#최소공배수1
num1 = int(input('1보다 큰 정수 입력:'))
num2 = int(input('1보다 큰 정수 입력:'))
maxNum = 0
for i in range(2,num1+1):
if num1 % i== 0 and num2 % i == 0:
maxNum = i
minNum = (num1*num2) //maxNum
#최소공배수
num1 = int(input('1보다 큰 정수 입력:'))
num2 = int(input('1보다 큰 정수 입력:'))
num3 = int(input('1보다 큰 정수 입력:'))
maxNum = 0
for i in range(2,num1+1):
if num1 % i== 0 and num2 % i == 0:
maxNum = i
print(f'최대공약수:{maxNum}')
minNum = (num1*num2)//maxNum
print(f'최소공배수:{minNum}')
newNum= minNum #최소
for j in range(2,newNum+1):
if newNum % j == 0 and num3 % j == 0:
maxNum = j
minNum = (newNum*num3) //maxNum #이 부분!!
print(minNum)
📌이 경우는 3자리수의 최소공배수를 구하는 문제이다. 이때 먼저 두 숫자의 최대공약수와 최소공배수를 구한 후에 이 최소공배수와 다음 수의 최소공배수를 구하면 된다