Professional Documents
Culture Documents
소수
소수
입력
자릿수 n이 정수로 입력된다.(1 <= n <= 10)
출력
1. n자리로 이루어진 오른편 절단 가능 소수들을 한 줄에 하나씩 오름차순으로 출
력한다.
2. 마지막 줄에 출력된 오른편 절단 가능 소수들의 개수를 출력한다.
입력 예 출력 예
23
29
31
37
53
2
59
71
73
79
9
절단소수 1
풀이
절단소수 2
줄 코드 참고
34 f(num*10+i, len+1);
35 }
36 }
37
38 int main()
39 {
40 scanf("%d", &n);
41 f(0, 0);
42 printf("%d", cnt);
43 }
절단소수 3
이런 구조로 길이가 n인 순열이 생성되고, 생성된 수를 4~11행의 소수 판별함수로 오른
쪽부터 하나씩 절단하면서 소수인지 판단한다. 이 때 n/10으로 수를 분리하면 된다. 만약
오른쪽을 절단하면서 체크하는 과정에서 하나라도 소수가 아니면 바로 취소하고, 다음 숫
자로 넘어간다. 만약 오른편 절단 가능 소수임이 판단되면 전체 개수를 저장하는 변수 cnt
값을 1증가시키고, 그 수를 화면에 바로 출력한다.
절단소수 4
줄 코드 참고
13 void f(int num, int len)
14 {
15 if(len==n)
16 {
17 if(isprime(num))
18 {
19 cnt++;
20 printf("%d\n", num);
21 }
22 return ;
23 }
24 else
25 {
26 if(isprime(num))
27 {
28 f(num*10+1, len+1);
29 f(num*10+3, len+1);
30 f(num*10+7, len+1);
31 f(num*10+9, len+1);
32 }
33 }
34 }
35
36 int main()
37 {
38 scanf("%d", &n);
39 f(2,1); f(3,1); f(5,1); f(7,1);
40 printf("%d", cnt);
41 }
n = 1일 때,
n = 2일 때,
절단소수 5
n = 3일 때,
절단소수 6