입력받은 수가 소수인지 아닌지 판별하는 프로그램을 작성해라 (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문은 더 적게 도는 것일수록 조건의 효율이 좋은것!