반응형
문제 설명
2부터 N(입력받은 수)까지의 숫자가 소수인지 아닌지를 순서대로 검사하고, 소수라면 소수라는 메시지를 출력하고, 소수가 아니면 해당 숫자의 약수를 구하여 출력하는 프로그램을 만들어보자.
(1은 소수가 아니며 2는 소수이다.)
코드
def solve(n):
global flag
print("{0}은 합성수".format(n))
i = 1
while i <= n:
if n % i == 0 :
print("약수 : {0}".format(i))
i += 1
flag = False
def check_prime(n):
global flag
i = 2
if n == 2:
print("{0}은 소수".format(n))
while i < n :
if n % i == 0:
flag = True
break
i += 1
if i == n :
print("{0}은 소수".format(i))
n = int(input("정수 입력 :"))
cnt = 2
flag = False
while cnt <= n :
check_prime(cnt)
if flag == True :
solve(cnt)
cnt += 1
해설
def solve() 는 합성수의 약수를 구하는 함수이다. n을 1~n까지의 수로 나누어 보면서 약수를 구한다.
(나누었을 때 나머지 값이 0으로 나누어 떨어지면 그 수는 n의 약수이다.)
def check_prime() 는 소수를 구해주는 함수이다. 소수는 1과 자기 자신을 제외하였을 때 나누어 떨어지는 값이 없는 수이다. n%i==0 을 통해 확인을 해보고 나누어 떨어지지 않으면 그 수는 n과 같아지게 되어 while문에 나오게 되며 소수임을 알 수 있다.
flag 변수를 통하여 소수일 때와 아닐 때를 구분하면서 두 개의 함수를 적절하게 사용할 수 있게 한다.
flag = False 를 초기값으로 설정하고 소수가 아닌 값에 대해서는 flag=True 값으로 변경해준다.
반응형
'Algorithm' 카테고리의 다른 글
[python] 소인수분해, 최소 공배수 구하기 (0) | 2022.01.18 |
---|---|
[python] 반복문과 재귀 호출을 사용하여 두 수의 최대 공약수 구하기 (0) | 2022.01.18 |
[python] 파이썬을 이용해 소수 추출하기 / 에라토스테네스의 체 방법으로 추출하기 (0) | 2022.01.18 |
[code up] 6098 성실한 개미 (0) | 2022.01.16 |
[code up] 파이썬 6097 설탕과자 뽑기 (0) | 2022.01.16 |