码迷,mamicode.com
首页 > 其他好文 > 详细

204. Count Primes

时间:2016-05-23 22:30:46      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

Description:

Count the number of prime numbers less than a non-negative number, n.

 

 1 int countPrimes(int n) {
 2     bool *isprime = (bool*)malloc(n*sizeof(bool));
 3     int i,j;
 4     int count;
 5     if(n <= 2)
 6         return 0;
 7     if(n == 3)
 8         return 1;
 9     count = n - 2;                      //去掉1不是素数,2是素数,剩下的conut计算素数的个数,就是减去3到n之间的合数
10     for(i = 3; i < n; i++)
11     {
12         if(i % 2)
13             isprime[i] = true;             
14         else{                                //总数去掉2的幂数的数
15             isprime[i] = false;
16             count--;
17         }
18     }
19     for(i = 3; i * i <= n; i++)                    //这里判断到n的开方,是因为i到i*i之间所有的数都会被判断到
20     {
21         if(isprime[i])                       //当i是质(素)数的时候,i的所有的倍数必然是合数
22         {
23             for(j = i*i; j < n; j+=i)
24                 if(isprime[j])                 //j从i*i 开始判断,因为i *(i-1)已经判断过了
25                 {
26                     isprime[j] = false;           
27                     count--;                   //总数去掉为合数的数
28                 }
29         }
30     }
31     free(isprime);
32     return count;
33     
34 }

 

204. Count Primes

标签:

原文地址:http://www.cnblogs.com/boluo007/p/5521559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!