#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 |