#100부터 1000사이의 난수에 대해서 약수, 소수, 소인수를 출력하는 프로그램을 만들어보자
import random
import math
class Number():
def __init__(self, n):
self.num = n
def measure(self): # 약수
array = []
for i in range(1, self.num + 1):
if self.num % i == 0:
array.append(i)
return array
def prime_num(self): # 소수
array = []
array1 = [True for i in range(self.num + 1)]
for i in range(2, int(math.sqrt(self.num + 1))):
if array1[i] == True:
j = 2
while i * j <= self.num:
array1[i * j] = False
j += 1
for i in range(2, self.num + 1):
if array1[i]:
array.append(i)
return array
def small_number(self): 소인수
array = []
for i in range(1, self.num + 1):
if self.num % i == 0:
array.append(i)
for i in range(len(array)):
j = 2
if i == j:
j += 1
continue
else:
if i % j == 0:
array.pop(i)
j += 1
return array
random_num = random.randint(100, 1000)
num = Number(random_num)
print(random_num)
print(num.measure())
print(num.prime_num())
print(num.small_number())