질량 찾기

   
   
   
   
  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.     char number[MAX_SIZE]; 
  16.     int i,count_one , count_two; 
  17.     for(i = 0; i <= MAX_SIZE ; i++){ 
  18.         if( i == 0 || i == 1) 
  19.             number[i] = FALSE; 
  20.         else 
  21.             number[i] = TRUE; 
  22.     } 
  23.     #ifdef PRINT 
  24.     count_one = find_prime(number); 
  25.     printf("find_prime   :%d
    "
    ,count_one); 
  26.     #else 
  27.     count_two = find_prime1(number); 
  28.     printf("find_prime1  :%d
    "
    ,count_two); 
  29.     #endif 
  30.  
  31. /** 
  32.  *  1 
  33.  */ 
  34. int find_prime( char * array ) 
  35.     int k , m; 
  36.     int count; 
  37.     for( k = 2 ; k <= MAX_SIZE ; k++ ){ 
  38.         for( m =k ;m*k <= MAX_SIZE ; m++) 
  39.             *( array + m*k ) = FALSE;  
  40.     } 
  41.     print_prime( array );    
  42.     count = count_number( array ); 
  43.     return count; 
  44. /** 
  45.  *  2 
  46.  */ 
  47. int find_prime1( char * array ) 
  48.     int i,j,count; 
  49.     for( i = 2 ; i <= sqrt( MAX_SIZE ) ; i++ ){ 
  50.         if( array[i] == TRUE ){ 
  51.             for( j = i ; i*j <= MAX_SIZE  ; j++ ){ 
  52.                 array[i*j] = FALSE; 
  53.             } 
  54.         } 
  55.     }    
  56.     print_prime( array );    
  57.     count = count_number( array ); 
  58.     return count; 
  59.  
  60. /** 
  61.  *    
  62.  */ 
  63. int count_number( char * array ) 
  64.     int k ; 
  65.     static int count = 0; 
  66.     for(k = 0 ; k <= MAX_SIZE ; k++ ){ 
  67.         if( *( array + k ) == TRUE ) 
  68.             count++; 
  69.     } 
  70.     return count; 
  71.  
  72. /** 
  73.  *   
  74.  */ 
  75. void print_prime( char * array ) 
  76.     int i; 
  77.     for( i = 0 ; i <= MAX_SIZE ; i++ ){  
  78.         if( *( array + i ) == TRUE ) 
  79.             printf(" :%d
    "
    , i ); 
  80.     } 

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

좋은 웹페이지 즐겨찾기