반응형

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

 

2023번: 신기한 소수

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

www.acmicpc.net

 

 

[ 문제풀이 ]

 

1. 첫번 째 자리 숫자는 소수여야 하므로 2, 3, 5, 7 밖에 들어가지 못합니다.

 

2. 다음 자리 숫자부터는 짝수가 들어가면 소수가 되지 못하므로 홀수만 넣어주고, 소수 판별을 통해 소수인지 체크해줍니다.

 

3. 백트래킹을 통해 반복하면서 소수라면 출력합니다.

 

[ 소스코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<iostream>
#include<cmath>
 
using namespace std;
 
bool isPrime(int num){
    if(num<2return false;
    for(int i=2; i*i<=num; i++){
        if(num%i == 0return false;
    }
    return true;
}
 
void dfs(int first, int n){
    //자릿수(n)가 0이 되면 그 수 출력
    if(n==0printf("%d\n", first);
    
    for(int i=1; i<10; i+=2){   //홀수만 더해주기
        int tmp = first*10 + i;
        if(isPrime(tmp)){
            dfs(tmp, n-1);
        }
    }
 
}
int main(void){
    int n;
    scanf("%d"&n);
 
    //맨 앞 자릿수가 prime number 이어야합니다
    int prime[4= {2357};
    for(int i=0; i<4; i++){
        dfs(prime[i], n-1);
    }
    return 0;
}
 
cs
반응형

+ Recent posts