首页 > 其他 > 详细

素数(Prime)

时间:2019-05-12 21:49:22      阅读:213      评论:0      收藏:0      [点我收藏+]

素数的判断:

 1 #include<math.h>
 2 bool IsPrime(int n)
 3 {
 4     if(n <= 1)
 5         return false;
 6     int sqr = (int)sqrt(1.0*n);
 7     for(int i=2; i<=sqr; i++)
 8         if(n%i==0)  return false;
 9     return true;
10 }

获取素数表:

 1 const int M=101;
 2 vector<int> prime;
 3 bool isPrime[M]={0};
 4 
 5 void FindPrime()
 6 {
 7     for(int i=1; i<M; i++)
 8         if(IsPrime(i))
 9         {
10             prime.push_back(i);
11             isPrime[i] = 1;
12         }
13 }

埃氏筛法(Eratosthenes):

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 const int M=101;
 5 int isPrime[M];
 6 
 7 void Eratosthenes()
 8 {
 9     fill(isPrime, isPrime+M, 1);
10     isPrime[0]=0;
11     isPrime[1]=0;
12     for(int i=2; i<M; i++)
13         if(isPrime[i] == 1)
14         {
15             printf("%d ", i);
16             for(int j=2*i; j<M; j+=i)
17                 isPrime[j] = 0;
18         }
19 
20 }
21 
22 int main()
23 {
24     Eratosthenes();
25     return 0;
26 }
  • 时间复杂度:O( Nlog(logN) )
  • 第一个测出地球周长的男人-。-

欧氏筛法(Euler):

 1 #include<cstdio>
 2 #include<vector>
 3 using namespace std;
 4 const int M=101;
 5 int isPrime[M];
 6 vector<int> prime;
 7 
 8 void Euler()
 9 {
10     fill(isPrime, isPrime+M, 1);
11     isPrime[0]=0;
12     isPrime[1]=0;
13     for(int i=2; i<M; i++)
14     {
15         if(isPrime[i])
16         {
17             prime.push_back(i);
18             printf("%d ", i);
19         }
20         for(int j=0; j<prime.size(); j++)
21         {
22             if(i*prime[j] > M)
23                 break;
24             isPrime[i*prime[j]] = 0;
25             if(i%prime[j] == 0)
26                 break;
27         }
28     }
29 }
30 
31 int main()
32 {
33     Euler();
34     return 0;
35 }
  • 时间复杂度:O(N)
  • 欧拉待过的俄法德,都曾是世界最强的国家,如果当初欧拉来中国,是不是咱们就年年ACM总冠军了-。-

素数(Prime)

原文:https://www.cnblogs.com/blue-lin/p/10853801.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!