본문 바로가기
코딩 연습/코딩배우기

파이썬 소수 찾기

by good4me 2022. 4. 9.

goodthings4me.tistory.com

파이썬 소수 찾기 문제를 3가지 방식으로 풀어서 소수 목록을 만들어 본다. 함수에 숫자를 넣으면 소수 여부를 판단해주거나 그 숫자까지의 소수를 찾아주거나 해당 수만큼 소수 목록을 찾아주는 간단한 예제 프로그램임 

 

 

파이썬 소수 찾기 #1

숫자 하나를 함수의 인자로 넣으면 그 숫자의 소수 여부를 판단하여 알려준다.

def prime_num(n):
    if n == 2:
        print(f'{2}는 소수')
        return True

    for i in range(2, n):
        if n % i == 0:
            print(f'숫자 {n}은 {i}로 나누어 나머지가 0이 됨으로 소수 아님')
            return False

    print(f'숫자 {n}은 소수임')
    return True # for문에서 return하지 않고 왔으면 소수이므로 True 리턴

prime_num(125)


[실행 결과]
숫자 125은 5로 나누어 나머지가 0이 됨으로 소수 아님



파이썬 소수 찾기 #2 

주어진 숫자를 함수의 인자로 넣으면 그 수까지의 소수 목록을 출력한다.

def prime_num_count(n):
    cnt = 0
    for i in range(2, n + 1):
        prime = True
        for j in range(2, i + 1):
            if i == 2:
                break
            if i > j and i % j == 0:
                prime = False
                break
            else:
                continue
        if prime:
            cnt += 1
            print(i, end=' ')

    print(f'\n숫자 {n}까지 소수의 개수는 {cnt}개임')

prime_num_count(200)


[실행 결과]
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199      
숫자 200까지 소수의 개수는 46개임

 

good4me.co.kr


파이썬 소수 찾기 #3 

이 문제는 네이버 지식에 있던 파이썬 소수 관련 코드로 주어진 숫자만큼 소수 개수를 찾아 목록으로 출력한다.

def find_prime_num_count(cnt):
    N_PRIMES = cnt
    number = 2
    count = 0

    print(f'소수 {cnt}개까지의 숫자는...')

    while count < N_PRIMES :
        divisor = 2 
        prime = True
        while divisor < number :
            if number % divisor == 0: 
                prime = False
                break
            divisor += 1
            
        if prime:
            count += 1
            print(number, end=" ")
        number += 1 

find_prime_num_count(50)


[실행 결과
소수 50개까지의 숫자는...
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229

 

 

 

댓글