1. 약수와 소수
1) 약수 : 어떤 수를 나누어떨어지게 하는 수
ex)
2의 약수 : 1, 2
8의 약수 : 1, 2, 4, 8
22의 약수 : 1, 2, 11, 22 ---
#약수
inputNumber = int(input('0보다 큰 정수 입력'))
divisor = []
for i in range(1, inputNumber+1):
if inputNumber % i == 0:
divisor.append(i)
print(divisor)
2) 소수 : 1과 자신만을 약수로 가지는 수 (단, 1은 제외)
ex) 2, 3, 5, 7, 11, 13, 17, 19 ---
#소수
inputNumber = int(input('0보다 큰 정수 입력'))
prime = []
for number in range(2, inputNumber + 1):
flag = True
for n in range(2, number): #입력된 수보다 1 작은 수에 약수가 있으면 거름
if number % n == 0:
flag = False
break
if (flag):
#print('소수')
prime.append(number)
else:
#print('합성수')
print(prime)
2. 소인수분해
1) 소인수 : 약수 중에서 소수인 숫자
ex)
20의 소인수 : 2, 5
36의 소인수 : 2, 3
#소인수
inputNumber = int(input('1보다 큰 정수'))
n = 2
while n <= inputNumber:
if inputNumber % n == 0:
print(f'소인수 : {n}')
inputNumber /= n
else:
n += 1
2) 소인수분해 : 1보다 큰 정수를 소인수의 곱으로 나타내는 것
ex)
20의 소인수분해 : 2^2 5
36의 소인수분해 : 2^2 3^2
25의 소인수분해 : 5^2
41의 소인수분해 : 41
#소인수분해
inputNumber = int(input('1보다 큰 정수'))
factor = []
n = 2
while n <= inputNumber:
if inputNumber % n == 0:
print(f'소인수 : {n}')
if factor.count(n) == 0:
factor.append(n)
elif factor.count(n) == 1:
factor.remove(n)
inputNumber /= n
else:
n += 1
print(f'facotrs : {factor}')