import random
target_num = random.randint(100, 1000)
print(f"> 추출된 번호: {target_num:,d}")
# 약수
divisor_list = list()
for i in range(1, target_num + 1):
if target_num % i == 0:
divisor_list.append(i)
print(f"> {target_num:,d}의 약수 ({len(divisor_list)}개): {divisor_list}")
# 소수
prnumber_list = list()
for i in range(2, target_num + 1):
flag = True
for j in range(2, i):
if i % j == 0:
flag = False
if flag:
prnumber_list.append(i)
print(f"> {target_num:,d}의 소수 ({len(prnumber_list)}개): {prnumber_list}")
# 소인수
prfactor_list = [num for num in prnumber_list if num in divisor_list]
print(f"> {target_num:,d}의 소인수 ({len(prfactor_list)}개): {prfactor_list}")
# 출력결과
# > 추출된 번호: 143
# > 143의 약수 (4개): [1, 11, 13, 143]
# > 143의 소수 (34개): [2, 3, 5, 7, 11, (중략) 137, 139]
# > 143의 소인수 (2개): [11, 13]
import random
target_num = random.randint(100, 1000)
print(f"> 추출된 번호: {target_num:,d}")
i = 2
prnumber_list = list()
while i <= target_num:
if target_num % i == 0:
prnumber_list.append(i)
target_num /= i
else:
i += 1
print(f"> 소인수 리스트: {prnumber_list}")
temp = 0
for num in prnumber_list:
if num != temp:
print(f"> {num}의 지수: {prnumber_list.count(num)}")
temp = num
else:
continue
# 실행 결과
# > 추출된 번호: 735
# > 소인수 리스트: [3, 5, 7, 7]
# > 3의 지수: 1
# > 5의 지수: 1
# > 7의 지수: 2
import random
target_num1 = random.randint(100, 1000)
target_num2 = random.randint(100, 1000)
print(f"> 추출된 번호: {target_num1:,d}, {target_num2:,d}")
# 공약수
comdiv_list = list()
for i in range(1, min(target_num1, target_num2)+1):
if target_num1 % i ==0 and target_num2 % i == 0:
comdiv_list.append(i)
print(f"> 공약수 리스트: {comdiv_list}")
# 최대공약수
max_comdiv = max(comdiv_list)
print(f"> 최대공약수: {max_comdiv}")
# 서로소
if max_comdiv == 1:
print(f"> {target_num1:,d}, {target_num2:,d}는 서로소입니다.")
else:
print(f"> {target_num1:,d}, {target_num2:,d}는 서로소가 아닙니다.")
# 출력결과
# > 추출된 번호: 692, 747
# > 공약수 리스트: [1]
# > 최대공약수: 1
# > 692, 747는 서로소입니다.
#
# > 추출된 번호: 836, 902
# > 공약수 리스트: [1, 2, 11, 22]
# > 최대공약수: 22
# > 836, 902는 서로소가 아닙니다.
import random
target_num1 = random.randint(100, 1000)
target_num2 = random.randint(100, 1000)
print(f"> 추출된 번호: {target_num1:,d}, {target_num2:,d}")
# 최대공약수
comdiv_list = list()
for i in range(1, min(target_num1, target_num2)+1):
if target_num1 % i ==0 and target_num2 % i == 0:
comdiv_list.append(i)
max_comdiv = max(comdiv_list)
print(f"> 최대공약수: {max_comdiv}")
# 최소공배수
min_commul = target_num1 * target_num2 // max_comdiv
print(f"> 최소공배수: {int(min_commul)}")
# 출력결과
# > 추출된 번호: 704, 143
# > 최대공약수: 11
# > 최소공배수: 9152
user_value = input("변환할 값을 입력하세요: ")
from_method = int(input("변환할 값의 진법을 선택하세요 (2. 2진수, 8. 8진수, 16. 16진수): "))
if from_method == 2:
user_value = "0b" + user_value
return_value = int(user_value, 2)
elif from_method == 8:
user_value = "0o" + user_value
return_value = int(user_value, 8)
elif from_method == 16:
user_value = "0x" + user_value
return_value = int(user_value, 16)
else:
raise ValueError("정확한 진법을 선택하세요.")
print(f"{user_value}({from_method}) => {return_value}(10)")
# 출력결과
# 변환할 값을 입력하세요: 11011
# 변환할 값의 진법을 선택하세요 (2. 2진수, 8. 8진수, 16. 16진수): 2
# 0b11011(2) => 27(10)
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.