c·c++/c 프로그래밍

1부터 1000까지 3,6,9 의 숫자가 들어가는 소수들의 합을 구하는 문제

바로이순간 2013. 5. 1. 12:25

#include <stdio.h>

// 2이상의 n에 대해서만 동작, 1일 경우는 소수로 판별, 따라서 2이상의 경우만 호출해준다.

int isprime(int n) {

    int i=2;

    while(i*i<n && n%i!=0) i+=1;

    if(i*i>n) return 1;

    return 0;

}

// 3,6,9 중의 한수자를 가지면 1을 반환한다.

int has369(int n) {

    int x;

    while(n!=0) {

        x=n%10;

        if(x>0 && x%3==0) return 1;

        n/=10;

    }

    return 0;

}

int main() {

    int i, sum=0;

    // 2는 소수지만, 해당이 안되므로 3부터 시작해서 홀수만 따져보면 된다.

    for(i=3;i<=1000;i+=2) {

        if(isprime(i) &&  has369(i)) {

            printf("%d ", i);

            sum+=i;

        }

    }

    printf("\n합=%d\n", sum);


    return 0;

}

'c·c++ > c 프로그래밍' 카테고리의 다른 글

스캐너(token으로 쪼개기)  (0) 2013.05.03
paper자르기  (0) 2013.05.02
0과 1사이의 기약분수   (0) 2013.04.28
floor, ceil 함수  (0) 2013.04.20
직사각형 그리기  (0) 2013.04.19