2023. 신기한 소수

jp·2021년 9월 13일
0

baekjoon

목록 보기
1/15

문제

수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다.

7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수이고, 7도 소수이다. 즉, 왼쪽부터 1자리, 2자리, 3자리, 4자리 수 모두 소수이다! 수빈이는 이런 숫자를 신기한 소수라고 이름 붙였다.

수빈이는 N자리의 숫자 중에서 어떤 수들이 신기한 소수인지 궁금해졌다. N이 주어졌을 때, 수빈이를 위해 N자리 신기한 소수를 모두 찾아보자.

코드

def check(num):
    for i in range(2, int(int(num)**0.5)+1):
        if int(num) % i ==0:
            return
    if len(num) == n:
        print(num)
        return
    for p in prime:
        find(num+p)

n = int(input())
start = ['2', '3', '5', '7']
prime = ['1', '3', '7', '9']
for s in start:
    check(s)

풀이

check 함수 안에서 체크하는 숫자의 제곱근이 되기 전의 수들을 구해서 나눠줘본다. 만약에 나뉘면 소수가 아니므로 함수 나가기
만약 무사히 탈출했다면 다음 관문은 지금 체크하는 숫자가 내가 원하는 숫자자리수와 맞는지 확인하고 아니라면 역시 함수 나가기
맨 마지막에 뒷자리에 올 수 있는 숫자들을 하나씩 넣어주면서 체크해본다
즉 시작은 2로 시작하고 1, 3, 7, 9 를 하나씩 붙여보고 21에 1379 붙여보고...체크하고...

profile
응애 개발자지망생이 알고리즘에 고통받는 중

0개의 댓글