1 minute read

❓소수판별 프로그램

  • 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다.

👉Process

picture - fail to bring

👉Code

#소수인지 아닌지를 판별하는 프로그램을 만듦.

#소수를 판별하는 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")