질량 찾기

   
   
   
   
  1. #include  
  2. #include  
  3.  
  4. #define  TRUE  1 
  5. #define  FALSE 0 
  6. #define MAX_SIZE  1000 
  7. #define PRINT 1 
  8.  
  9. int find_prime( char * array ); 
  10. int find_prime1( char * array ); 
  11. int count_number( char *array ); 
  12. void print_prime( char *array ); 
  13.  
  14. int main() 
  15. { 
  16.     char number[MAX_SIZE]; 
  17.     int i,count_one , count_two; 
  18.     for(i = 0; i <= MAX_SIZE ; i++){ 
  19.         if( i == 0 || i == 1) 
  20.             number[i] = FALSE; 
  21.         else 
  22.             number[i] = TRUE; 
  23.     } 
  24.     #ifdef PRINT 
  25.     count_one = find_prime(number); 
  26.     printf("find_prime   :%d
    "
    ,count_one); 
  27.     #else 
  28.     count_two = find_prime1(number); 
  29.     printf("find_prime1  :%d
    "
    ,count_two); 
  30.     #endif 
  31. } 
  32.  
  33. /** 
  34.  *  1 
  35.  */ 
  36. int find_prime( char * array ) 
  37. { 
  38.     int k , m; 
  39.     int count; 
  40.     for( k = 2 ; k <= MAX_SIZE ; k++ ){ 
  41.         for( m =k ;m*k <= MAX_SIZE ; m++) 
  42.             *( array + m*k ) = FALSE;  
  43.     } 
  44.     print_prime( array );    
  45.     count = count_number( array ); 
  46.     return count; 
  47. } 
  48. /** 
  49.  *  2 
  50.  */ 
  51. int find_prime1( char * array ) 
  52. { 
  53.     int i,j,count; 
  54.     for( i = 2 ; i <= sqrt( MAX_SIZE ) ; i++ ){ 
  55.         if( array[i] == TRUE ){ 
  56.             for( j = i ; i*j <= MAX_SIZE  ; j++ ){ 
  57.                 array[i*j] = FALSE; 
  58.             } 
  59.         } 
  60.     }    
  61.     print_prime( array );    
  62.     count = count_number( array ); 
  63.     return count; 
  64. } 
  65.  
  66. /** 
  67.  *    
  68.  */ 
  69. int count_number( char * array ) 
  70. { 
  71.     int k ; 
  72.     static int count = 0; 
  73.     for(k = 0 ; k <= MAX_SIZE ; k++ ){ 
  74.         if( *( array + k ) == TRUE ) 
  75.             count++; 
  76.     } 
  77.     return count; 
  78. } 
  79.  
  80. /** 
  81.  *   
  82.  */ 
  83. void print_prime( char * array ) 
  84. { 
  85.     int i; 
  86.     for( i = 0 ; i <= MAX_SIZE ; i++ ){  
  87.         if( *( array + i ) == TRUE ) 
  88.             printf(" :%d
    "
    , i ); 
  89.     } 
  90. } 

vim 7.3  
gcc버전: 4.5.1 20100924(Red Hat 4.5.1-4)(GCC)
system : Fedora 14

좋은 웹페이지 즐겨찾기