num = int(input("숫자를 입력하세요: "))
for i in range(1, (num+1)):
if num % i == 0:
print(i, end=" ")
# 실행결과
# 숫자를 입력하세요: 9
# 1 3 9
num = int(input("숫자를 입력하세요: "))
for i in range(2, (num+1)):
flag = True
for j in range(2, i):
if i % j == 0:
flag = False
break
if flag:
print(f"{i}는 소수입니다.")
else:
print(f"{i}는 소수가 아닙니다.")
# 실행결과
# 숫자를 입력하세요: 10
# 2는 소수입니다.
# 3는 소수입니다.
# 4는 소수가 아닙니다.
# 5는 소수입니다.
# 6는 소수가 아닙니다.
# 7는 소수입니다.
# 8는 소수가 아닙니다.
# 9는 소수가 아닙니다.
# 10는 소수가 아닙니다.
num = int(input("숫자를 입력하세요: "))
n = 2
while n <= num:
if num % n == 0:
print("소인수: {}".format(n))
num /= n
else:
n += 1
# 실행결과
# 숫자를 입력하세요: 129
# 소인수: 3
# 소인수: 43
# 나눗셈 활용하는 경우
num_1 = int(input("1보다 큰 숫자를 입력하세요: "))
num_2 = int(input("1보다 큰 숫자를 입력하세요: "))
min_num = min(num_1, num_2)
max_gcd = 0
for i in range(1, min_num+1):
if num_1 % i == 0 and num_2 % i == 0:
max_gcd = i
print(f"공약수: {i}")
print(f"최대공약수: {max_gcd}")
# 실행결과
# 1보다 큰 숫자를 입력하세요: 20
# 1보다 큰 숫자를 입력하세요: 30
# 공약수: 1
# 공약수: 2
# 공약수: 5
# 공약수: 10
# 최대공약수: 10
# 유클리드 호제법 사용하는 경우
num_1 = int(input("1보다 큰 숫자를 입력하세요: "))
num_2 = int(input("1보다 큰 숫자를 입력하세요: "))
temp_1 = num_1
temp_2 = num_2
while temp_2 > 0:
temp = temp_2
temp_2 = temp_1 % temp_2
temp_1 = temp
print(f"{num_1}과 {num_2}의 최대공약수: {temp_1}")
# 실행결과
# 1보다 큰 숫자를 입력하세요: 20
# 1보다 큰 숫자를 입력하세요: 30
# 20과 30의 최대공약수: 10
# 두 수의 최소공배수
num_1 = int(input("1보다 큰 숫자를 입력하세요: "))
num_2 = int(input("1보다 큰 숫자를 입력하세요: "))
min_num = min(num_1, num_2)
max_gcd = 0
for i in range(1, (min_num + 1)):
if num_1 % i == 0 and num_2 % i == 0:
print(f"공약수: {i}")
max_gcd = i
print(f"최대공약수: {max_gcd}")
# 두 수의 곱을 최대공약수로 나누면 최소공배수를 쉽게 구할 수 있음
min_lcm = num_1 * num_2 // max_gcd
print(f"최소공배수: {min_lcm}")
# 실행결과
# 1보다 큰 숫자를 입력하세요: 10
# 1보다 큰 숫자를 입력하세요: 12
# 공약수: 1
# 공약수: 2
# 최대공약수: 2
# 최소공배수: 60
# 세 수의 최소공배수
num_1 = int(input("1보다 큰 숫자를 입력하세요: "))
num_2 = int(input("1보다 큰 숫자를 입력하세요: "))
num_3 = int(input("1보다 큰 숫자를 입력하세요: "))
min_num = min(num_1, num_2)
max_gcd = 0
for i in range(1, (min_num + 1)):
if num_1 % i == 0 and num_2 % i == 0:
max_gcd = i
min_lcm = num_1 * num_2 // max_gcd
# num_1과 num_2의 최소공배수를 num_3과의 비교용 숫자로 할당
num_12 = min_lcm
min_num = min(num_12, num_3)
max_gcd = 0
for i in range(1, (min_num + 1)):
if num_12 % i == 0 and num_3 % i == 0:
max_gcd = i
print(f"{num_1}, {num_2}, {num_3}의 최대공약수: {max_gcd}")
min_lcm = num_12 * num_3 // max_gcd
print(f"{num_1}, {num_2}, {num_3}의 최소공배수: {min_lcm}")
# 실행결과
# 1보다 큰 숫자를 입력하세요: 6
# 1보다 큰 숫자를 입력하세요: 12
# 1보다 큰 숫자를 입력하세요: 18
# 6, 12, 18의 최대공약수: 6
# 6, 12, 18의 최소공배수: 36
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.