#include<stdio.h>

int tnumber(n){
return 2*n*n-1;
}

int main(){
int i, j;
j=0;
for(i=1;i<50000000;i++){
if(isPrime(i)==_YES)
j++;

}
printf("%d\n",j);
}


by snowall 2008. 11. 16. 16:25
  • 그네고치기 2008.11.18 12:42 ADDR EDIT/DEL REPLY

    ... 나, 낚였다.
    처음 볼 때 isPrime이 코드 본문중에 정의되어 있는 줄 알았어요 ㅠㅠ

    • snowall 2008.11.18 13:50 신고 EDIT/DEL

      음...-_-;
      이게 snowall_math.h 파일을 기본적으로 인크루드 하도록 되어 있기 때문에 여기에 정의되지 않은 것도 있습니다.

      그건 그렇고, 무슨일을 하는 프로그램인지 소개도 안했는데 알아보시는군요 -_-;

  • NoSyu 2008.11.21 11:33 ADDR EDIT/DEL REPLY

    isPrime함수가 어떤 알고리즘을 쓰는지 문득 궁금해졌습니다.^^;;
    전에 Scheme를 공부하면서 소수찾기 알고리즘 소개만 받은지라..;;OTL...
    http://nosyu.egloos.com/tag/%EC%86%8C%EC%88%98%EC%B0%BE%EA%B8%B0

    • snowall 2008.11.21 12:27 신고 EDIT/DEL

      2부터 sqrt(n)보다 작은 최대의 정수까지 하나씩 다 나눠봅니다.
      사실은 2부터 sqrt(n)보다 작은 최대의 소수까지 하나씩 다 나눠보면 되는데, 그럼 isPrime을 재귀적으로 사용하든가, 아니면 prime들의 목록을 만들어놓고 일하든가 해야 하므로 효율적이지는 않습니다.