티스토리 뷰

1. 소수 판별은 몇 번 풀어본 문제여서 수월했다.

 

2. isitsosu 함수에서 num/2 까지만 for문을 돌려도 되는 것이 포인트

 

3. 이 방법 말고도 1부터 1000까지의 배열을 만들고 해당 값이 소수이면 1, 아니면 0 으로 해서 배열로 판별하는 방법도 어디서 배웠는데 까먹었다. 그게 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
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
 
int isitsosu(int num){
    for(int i=2; i < num/2; i++){
        if(num%i == 0){
            return 0;
        }
    }
    return 1;
}
 
// nums_len은 배열 nums의 길이입니다.
int solution(int nums[], size_t nums_len) {
    int answer = 0;
    int temp;
    for(int i = 0; i <nums_len - 2; i++){
        for(int j = i+1; j < nums_len -1; j++){
            for(int k = j+1; k < nums_len; k++){
                temp = nums[i]+nums[j]+nums[k];
                if(isitsosu(temp) == 1){
                    answer++;
                }
            }
        }
    }
    
    return answer;
}
댓글