Dev_from the Bottom

#12. Algorithm08_python) 소수 판별 본문

Algorithm_study

#12. Algorithm08_python) 소수 판별

고무라면 2022. 5. 13. 20:11

문제) 소수 판별

1보다 큰 임의의 정수를 입력받아 소수를 판별하라

 


step1) 테스트 : ex) 10, 11

# 입력받은 수가 10이라 가정

answer = "소수"

for i in range(2, 10):
    # 2부터 10-1까지 나누어지는지 확인
    if 10 % i == 0:    # 2부터 시작해서 나누어지는 수가 있으면 소수 아님
        answer = "소수 아님"
print(answer)

>>>
소수 아님

# ===========================================

# 입력받은 수가 11이라 가정

answer = "소수"

for i in range(2, 11):
    if 11 % i == 0:
        answer = "소수 아님"
print(answer)

>>>
소수

 

step2) 정답 출력   ex) 10, 11

# 입력받은 수가 10이라 가정

n = 10
answer = "소수"

for i in range(2, n):
    # 2부터 n-1까지 나누어지는지 확인
    if n % i == 0:
        answer = "소수 아님"
        break    # 소수가 아님이 판단되면 break로 빠져나옴

print(f'{n} : {answer}')

>>>
10 : 소수 아님


# ============================================


# 입력받은 수가 11이라 가정

n = 11
answer = "소수"

for i in range(2, n):
    # 2부터 n-1까지 나누어지는지 확인
    if n % i == 0:
        answer = "소수 아님"
        break    # 소수가 아님이 판단되면 break로 빠져나옴

print(f'{n} : {answer}')

>>>
11 : 소수

 

step3) 메서드화

def algo08(n):
    answer = "소수"
    for i in range(2, n):
        if n % i == 0:
            answer = "소수 아님"
            break
    return f'{n} : {answer}'
    
    
print(algo08(7))
print(algo08(11))
print(algo08(20))

>>>
7 : 소수
11 : 소수
20 : 소수 아님

 

step4) 최종

def algo08(n):
    answer = "소수"
    for i in range(2, n):
        if n % i == 0:
            answer = "소수 아님"
            break
    return f'{n} : {answer}'
    
n = int(input("소수 판별 n 입력 : "))
print(algo08(n))
    
>>>
소수 판별 n 입력 : 10
10 : 소수 아님

# 배운점

  • for문 내, break 사용하여 리소스 낭비 방지

# 소회

  • 가장 간단한 수학 알고리즘 문제

 

Comments