设为首页 加入收藏

TOP

204. Count Primes
2017-10-12 17:39:26 】 浏览:1081
Tags:204. Count Primes

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 }

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C/C++ memmove与memcpy的区别及实.. 下一篇冒泡排序的实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目