본문 바로가기

백준

백준2023 - 신기한 소수

https://www.acmicpc.net/problem/2023

 

2023번: 신기한 소수

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

www.acmicpc.net

우선 2, 3, 5, 7이 한자리 소수니까 해당 숫자에서 탐색을 시작한다. 2자리 수부터 마지막 자리로 짝수가 오면 소수가 아니니까 홀수만 판단한다. 소수를 판단 할 때는 해당 숫자의 루트값을 구하여 자연수를 끝 값으로 바꾼 뒤 3부터 끝 값까지 홀수만 탐색해 나가는 방식을 썼다. 소수로 판단하는 숫자는 무조건 홀수만 매개변수로 넘어가기 때문이다.

#include <iostream>
#include <cmath>
using namespace std;

int n;
int mat[4] = {2, 3, 5, 7};

bool find_prime(int x) {
    int stop = sqrt((double)x);
    
    for(int i = 3; i <= stop; i += 2){
        if(x % i == 0) {
            return false;
        }
    }
    return true;
}

void func(int x, int cnt) {
    if(cnt == n) {
        cout << x << '\n';
        return;
    }
    for(int i = 1; i <= 9; i += 2) {
        if(find_prime(x * 10 + i)) {
            func(x * 10 + i, cnt + 1);
        }
    }
}

int main() {
    cin >> n;
    
    for(int i = 0; i < 4; i++) {
        func(mat[i], 1);
    }
}

'백준' 카테고리의 다른 글

백준17178 - 줄서기  (0) 2020.06.04
백준11779 - 최소비용 구하기 2  (0) 2020.06.01
백준11502 - 새 개의 소수 문제  (0) 2020.05.21
백준2696 - 중앙값 구하기  (0) 2020.05.17
백준11501 - 주식  (0) 2020.05.16