ex. 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: # 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: # 다음 바퀴때 0으로 초기화
print(f'[소인수] : {num}')
ex. 100부터 1000사이의 난수를 소인수분해를 하고 각각의 소인수에 대한 지수를 출력하는 프로그램
import random
rNum = random.randint(100, 1000)
print(f'rNum : {rNum}')
# 소인수 List 출력
soinsuList = []
n = 2
while n <= rNum:
if rNum % n == 0:
print(f'소인수 : {n}')
soinsuList.append(n) # 리스트에 n 추가
rNum /= n # rNum을 n으로 나누고 다시 rNum으로 할당
else:
n += 1
print(f'soinsuList : {soinsuList}')
tempNum = 0
for s in soinsuList: # soinsuList 안에서 순차적으로 반복
if tempNum != s:
print(f'{s}\'s count : {soinsuList.count(s)}')
tempNum = s
ex. 100부터 1000사이의 2개의 난수에 대해서 공약수와 최대공약수를 출력하고,
서로소(1외에 공약수가 없는 두 수)인지 출력하는 프로그램
import random
rNum1 = random.randint(100, 1000)
rNum2 = random.randint(100, 1000)
print(f'rNum1 : {rNum1}')
print(f'rNum2 : {rNum2}')
for n in range(1, (min(rNum1, rNum2) + 1)): # min() 작은 수 반환
if rNum1 % n == 0 and rNum2 % n == 0:
print(f'공약수 : {n}')
maxNum = n # 반복문 끝에는 가장 큰 공약수가 변수에 할당
print(f'최대공약수 : {maxNum}')
if maxNum == 1: # 1외에는 서로 공통된 약수가 없다.
print(f'{rNum1}과 {rNum2}는 서로소이다.')
ex. 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)): # min() 작은 수 반환
if rNum1 % n == 0 and rNum2 % n == 0:
print(f'공약수 : {n}')
maxNum = n # 반복문 끝에는 가장 큰 공약수가 변수에 할당
print(f'최대공약수 : {maxNum}')
minNum = (rNum1 * rNum2) // maxNum # 최소공배수는 두 수를 곱한 값을 최대공약수로 나눈 값의 몫
print(f'최소공배수 : {minNum}')
ex. 사용자가 입력한 수를 이용해서, 진법 변환하는 코드
코dNum = int(input('10진수 입력 : '))
print('2진수 : {}'.format(bin(dNum)))
print('8진수 : {}'.format(oct(dNum)))
print('16진수 : {}'.format(hex(dNum)))
print('2진수(0b10101) -> 10진수({})'.format(int('0b10101', 2)))
print('8진수(0o135) -> 10진수({})'.format(int('0o135', 8)))
print('16진수(0x5f) -> 10진수({})'.format(int('0x5f', 16)))
print('2진수(0b10101) -> 8진수({})'.format(oct(0b10101)))
print('2진수(0b10101) -> 10진수({})'.format(int(0b10101)))
print('2진수(0b10101) -> 16진수({})'.format(hex(0b10101)))