PS/Baekjoon Online Judge

[백준 2023] 신기한 소수 [C]

kimyoungrok 2021. 8. 27. 12:38

백준 - 2023


풀이

8자리수의 소수를 확인하기 위해 1e8만큼의 공간을 할당하면 메모리 제한에 막힌다.

심지어 조건에 맞는 모든 소수의 개수가 100개도 안된다.

 

때문에, 다음과 같은 규칙을 찾아 문제를 해결했다.

  • N의 자릿수는 2, 3, 5, 7 이어야 한다.
  • 2를 제외한 모든 짝수는 소수가 아니기 때문에 홀수만 탐색해야 한다.

소스코드

#include <stdio.h>
#include <math.h>
int prime(int num){
    int sq = sqrt(num);
    for (int i = 2; i <= sq; i++)
        if (num%i == 0) return 0;
    return 1;
}
void dfs(int num, int digit){
    if (digit == 1) printf("%d\n", num);
    else
        for (int i = 1; i < 10; i += 2)
            if (prime(num*10 + i))
                dfs(num*10 + i, digit - 1);
}
int main(){
    int N;
    scanf("%d", &N);
    dfs(2, N);
    dfs(3, N);
    dfs(5, N);
    dfs(7, N);
}

출처

 

2023번: 신기한 소수

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

www.acmicpc.net

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 11401] 이항 계수 3 [C]  (0) 2021.08.28
[백준 2981] 검문 [C]  (0) 2021.08.28
[백준 9020] 골드바흐의 추측 [C]  (0) 2021.08.27
[백준 1963] 소수 경로 [C]  (0) 2021.08.26
[백준 1990] 소수인팰림드롬 [C]  (0) 2021.08.26