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

2015.07.15——prime素数

时间:2016-07-15 13:43:02      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

prime素数

1.素数也叫质数,定义是一个数只能被1和它自身整除。

  素数从2开始,0,1都不是素数。

2.素数的判断(C++)

3.给定某个数,求小于这个数的所有素数

 

2.素数的判断(C++)  

1 bool   IsPrimer(int   n)   
2   {   
3       int   m=sqrt(n);   
4       for(int i=2;i<=m;i++)      //只看从0-sqrt(n)
5       {   
6           if(n%i==0)   return   false;   //被1,n之外的数整除
7       }   
8       return   true;   
9   } 

  不需要看0-n的数,只看0-sqrt(n)即可

3.给定某个数,求小于这个数的所有素数

  基于Sieve of Eratosthenes

  https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

  从2-sqrt(n)开始,将i*i排除,i*i + i 排除,这些均可以被i整除。除了这些之外的数即为素数

 1 class MyClass
 2 {
 3 public:
 4     vector<int> coutPrimes(int n)
 5     {
 6         vector<bool> prime(n, true);
 7         vector<int> res;
 8         prime[0] = false; prime[1] = false;
 9         int k = sqrt(n);
10         for (int i = 2; i <= k; i++)
11         {
12             if (prime[i])                                //每次判断prime[i]是否为true
13             {
14                 for (int j = i*i; j < n; j += i)
15                 {
16                     prime[j] = false;                    //若不是prime则置为false,下次判断直接略过
17                 }
18             }
19         }
20         for (int i = 0; i < n; i++)
21         {
22             if (prime[i]) res.push_back(i);            //将所有素数输出
23         }
24         return res;
25         //return count(prime.begin(), prime.end(), true);
26     }
27 };

如图所示

技术分享技术分享技术分享

排除可以被2整除的                        排除可以被3整除的                           排除可以被5整除de

 

2015.07.15——prime素数

标签:

原文地址:http://www.cnblogs.com/zhuzhu2016/p/5672981.html

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