#소수인지 아닌지를 판별하는 프로그램을 만듦.
#소수를 판별하는 IsPrime(num) 함수를 조건문 if문과 while문을 사용하여 정의함. 소수면 True, 소수가 아니면 False를 결과값으로 리턴함.
def IsPrime(num):
if num == 2 or num == 3:
return True
# 효율적인 코딩을 위해 먼저 짝수인지 아닌지 판별함. 2를 제외한 짝수는 소수가 아니므로 False를 결과값으로 리턴.
elif num % 2 == 0:
return False
else:
i = 3 # i를 3부터 1씩 증가하며 num을 나누어보도록 while문과 if문을 사용함.
# 이때 효율을 위해 i는 i의 제곱이 num보다 같거나 작을 때까지만 나누어봄.
# num이 i로 한번이라도 나누어진다면 소수가 아니므로 False로 리턴. 한번도 나누어지지 않는다면 소수이므로 True로 리턴.
while i*i <= num:
if num % i == 0:
return False
i = i + 1
return True
# 사용자에게 프로그램 설명을 출력해줌.
print("소수를 판별하는 프로그램입니다.")
# while문을 사용해 무한루프를 만들어 계속해서 프로그램이 돌아갈 수 있도록하고,
# 변수 t에 정수형으로 수를 입력받아 조건에 따라 if문을 사용해 각각의 경우를 나누어 수행하도록 코딩함.
while True:
t = int(input("판별할 값을 입력해주세요 : "))
# -1을 입력받은 경우에는 프로그램을 종료해야하므로 break를 통해 무한루프 while문을 빠져나감.
if t == -1:
print("프로그램을 종료합니다.")
break
# -1보다 작은 정수나, 1 혹은 0을 입력받은 경우에는 각각 경우에 맞는 문자를 출력하고 continue를 통해 다시 while문의 처음으로 돌아감.
elif t < -1:
print("잘못 입력하셨습니다. 2이상의 정수를 입력해주세요.\n")
continue
elif t == 1 or t == 0:
print("소수가 아닙니다.\n")
continue
# 위의 조건문에 해당되지 않는 2이상의 정수는 IsPrime(num) 함수를 호출하여 대입한 뒤 결과값에 따라 소수를 판별함.
# 함수 결과값이 True이면 참이므로 "소수입니다"를 출력한 뒤 다시 처음으로 돌아가 while문을 수행하게 됨.
elif IsPrime(t):
print("소수입니다.\n")
else:
print("소수가 아닙니다.\n")