首页  :: 联系 :: 订阅 订阅  :: 管理

20道题目之六

Posted on 2007-06-14 21:05  。。。  阅读(128)  评论(0)    收藏  举报
 
用筛选法求100之内的素数。
    素数:只能被1和本省整除的数。
筛选法思路:将自然数1~100按顺序列成一张表,然后逐个判断它们是否素数。
具体做法:
1。先将1去掉。
2。用2去除它后面的各个数,把能被2整除的数去掉。
3。用3去除它后面的各个数,把能被3整除的数去掉。
4。分别用4、5……各数去除它后面的数,去除相应的数。
5。剩下的就是素数。

*/
#include   
<stdio.h>  
#include   
<math.h>  
void   main()  
{  
  
int i,j;  
  
int prime_flag[101];  
   
  
for (i  = 1; i <= 100; i++)  
{  
    prime_flag[i] 
= 1;  
}  
   
  
for (i = 2;   i <= 50; i++)  
{  
    
if   (prime_flag[i] == 0)  
    {  
        
continue;  
    }  
  
for (j   = i + 1; j <= 100; j++)  
  {  
    
if (prime_flag[j] && j % i == 0)  
    {  
    prime_flag[j] 
= 0;  
    }  
  }  
}  
   
  
for   (i =2;   i <= 100; i++)  
  {  
    
if (prime_flag[i])  
    {  
    printf(
"get   a   prime:   %d\n",   i);  
    }  
  }  
}