약수

소수

소인수분해

[연습 문제.1]
- 100부터 1000사이의 난수에 대해서 약수, 소수, 그리고 소인수를 출력하는
프로그램을 만들어보자.
import random
rNum = random.randint(100, 1000)
print(f'rNum: {rNum}')
for num in range(1, rNum+1):
soinsuFlag = 0
if rNum % num == 0:
print(f'[약수]: {num}')
soinsuFlag += 1
if num != 1:
flag = True
for n in range(2, num):
if num % n == 0:
flag = False
break
if (flag):
print(f'[소수]: {num}')
soinsuFlag += 1
if soinsuFlag >= 2:
print(f'[소인수]: {num}')
[연습 문제.2]
- 100부터 1000사이의 난수를 소인수분해를 하고 각각의 소인수에 대한 지수를
출력하는 프로그램을 만들어보자
import random
rNum = random.randint(100, 1000)
print(f'rNum: {rNum}')
soinsuList = []
n = 2
while n <= rNum:
if rNum % n == 0:
print(f'소인수: {n}')
soinsuList.append(n)
rNum /= n
else:
n += 1
print(f'soinsuList: {soinsuList}')
tempNum = 0
for s in soinsuList:
if tempNum != s:
print(f'{s}\'s count: {soinsuList.count(s)}')
tempNum = s
최대공약수

[연습 문제.3]
- 100부터 1000사이의 2개의 난수에 대해서 공약수와 최대공약수를 출력하고,
서로소인지 출력하는 프로그램을 만들어보자.
import random
rNum1 = random.randint(100, 1000)
rNum2 = random.randint(100, 1000)
print(f'rNum1: {rNum1}')
print(f'rNum2: {rNum2}')
maxNum =0
for n in range(1, (min(rNum1, rNum2) + 1)):
if rNum1 % n == 0 and rNum2 % n == 0:
print(f'공약수: {n}')
maxNum = n
print(f'최대공약수: {maxNum}')
if maxNum == 1:
print(f'{rNum1}과 {rNum2}는 서로소이다.')
최소공배수

[연습 문제.4]
- 100부터 1000사이의 2개의 난수에 대해서 최대공약수와 최소공배수를 출력하는
프로그램을 만들어보자.
import random
rNum1 = random.randint(1, 100)
rNum2 = random.randint(1, 100)
print(f'rNum1: {rNum1}')
print(f'rNum2: {rNum2}')
maxNum = 0
for n in range(1, (min(rNum1, rNum2) + 1)):
if rNum1 % n == 0 and rNum2 % n == 0:
print(f'공약수: {n}')
maxNum = n
print(f'최대공약수: {maxNum}')
minNum = (rNum1 * rNum2) // maxNum
print('최소공배수: {}'.format(minNum))