[파이썬] 소수인지 판별하기

Park Sunjoo·2022년 6월 16일
0

파이썬_스터디

목록 보기
3/5

입력받은 수가 소수인지 아닌지 판별하는 프로그램을 작성해라 (for, if문 사용)

소수가 되는 조건

소수n은 다음과 같은 조건을 가지고 있다.

  • 소수n을 2부터 n까지 나누었을 때 나머지가 0이 나오지x (단 n 본인은 제외함)

    ex)
    n = 5 (소수)
    5 % 2 == 3
    5 % 3 == 2
    5 % 4 == 1
    5 % 5 == 0
    따라서 5는 소수이다.

코드

# 입력받은 수가 소수인지 판별하는 프로그램을 작성해라
num = int(input("숫자를 입력하세요: "))
for i in range(2, num):
    result = num % i #나머지 구하기
    if result == 0:  # n을2부터~n까지로 나누었을 때 0이라면
        is_prime = False  # 소수가 아님
        break # 바로 break
    else:
        is_prime = True  #소수임

if is_prime: # is_prime이 True라면 소수
    print("{}은(는) 소수이다.".format(num))
else:
    print("{}은(는) 소수가 아니다.".format(num))

    ```
 
 ```python
 for i in range(2, num):
    ....

2에서 num까지 반복한다. 사실 n~num-1이기 때문에 num+1을 해줘야하는 것이 맞다.
이 코드는 숫자 자기 자신까지 돌릴 필요가 없기 때문에 end부분에 num을 그대로 넣어줬다.

result = num % i #나머지 구하기
    if result == 0:  # n을2부터~n까지로 나누었을 때 0이라면
        is_prime = False  # 소수가 아님
        break # 바로 break
    else:
        is_prime = True  #소수임

매번 if문에서 계산하는걸 생각해서 효율적으로 나누는 값을 넣을 result변수를 선언했다.
나머지가 0인 경우가 나온다면 isprime변수를 False, break로 반복문을 나간다.
나머지가 0이라면 소수가 아니기때문에 더 반복문을 돌 필요없이 나오면 된다._

반대로 나머지가 0이 나오지 않으면 계속 돌린다.

if is_prime: # is_prime이 True라면 소수
    print("{}은(는) 소수이다.".format(num))
else:
    print("{}은(는) 소수가 아니다.".format(num))

is_prime이 True라면 소수이다.
False라면 소수가 아니다.

if문은 더 적게 도는 것일수록 조건의 효율이 좋은것!

profile
개발, 디자인에 관심있는 문어발

0개의 댓글