본문 바로가기

C언어

2025년 여름학기 9주차 C언어

 

#include <stdio.h>
#include <math.h>
#include <stdbool.h>

// 소수를 판별하는 함수다
int check(int num) {
    if (num < 2) return 0;          // 2 미만:소수 아님
    if (num == 2) return 1;         // 2:소수
    if (num % 2 == 0) return 0;     // 2의 배수:소수 아님
    
    //위 조건에서 걸러지지 않은 걸 아래에서  거르게 된다

    int root = (int)sqrt(num);      // 제곱근까지만 검사
    for (int i = 3; i <= root; i += 2) {  // 홀수만 검사
        if (num % i == 0) return 0; // 나누어떨어지면:소수 아님
    }
    return 1;   // 위 조건 다 통과했으니 소수다
}

int main() {
    int M, N;
    scanf("%d %d", &M, &N);

    for (int i = M; i <= N; i++) {
        if (check(i)) {
            printf("%d\n", i);
        }
    }
    return 0;
}

 

#include <stdio.h>

#define MOD 15746

int main(void) {
    int N;
    if (scanf("%d", &N) != 1) return 0;
    
    //1일 때 만들 수 있는 경우는 1 하나다

    if (N == 1) { printf("1\n"); return 0; }
    
    //2일 때 만들 수 있는 경우는 00이거나 11로 2가지다
    if (N == 2) { printf("2\n"); return 0; }
    
    
    int a = 1;   // dp[1]로 길이가 1일 때의 경우의 수다
    int b = 2;   // dp[2]로 길이가 2일 때의 경우의 수다
    
    // 점화식이다
    // dp[i] = dp[i-1] + dp[i-2]
    //길이 3부터 N까지 반복해서 계산한다 
    for (int i = 3; i <= N; i++) { // 현재 dp[i] = dp[i-1] + dp[i-2] (MOD로 나눈다)
        int c = (a + b) % MOD; // dp[i]
        a = b; 
        b = c; 
    }
    printf("%d\n", b);
    return 0;
}

'C언어' 카테고리의 다른 글

2025년 2학기 2주차  (0) 2025.09.20
2025년 2학기 1주차  (0) 2025.09.14
2025년 여름학기 8주차 C언어  (2) 2025.08.17
2025년 여름학기 7주차 C언어  (1) 2025.08.08
2025년 여름학기 6주차 C언어  (1) 2025.08.02