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

公倍数与素数筛选

时间:2019-01-13 18:12:41      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:view   iostream   void   sed   最小   typedef   isp   测试   最小公倍数   

这次花点时间做了一下几个简单的模板,或许以后还会有新的模板!


 

技术分享图片
 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 
 5 typedef long long ll;
 6 const ll MAX = 0xffffffff;
 7 
 8 // 辗转相除法的一般写法 
 9 int gcd1(int a, int b)
10 {
11     int t = 0;
12     while(a%b != 0)
13     {
14         t = b;
15         b = a%b;
16         a = t;
17     }
18     return b;
19 }
20 
21 // 辗转相除法的递归写法 
22 int gcd(int a, int b)
23 {
24     if(a%b == 0)
25         return b;
26     else
27         return gcd(b, a%b);
28 }
29 
30 // 更相减损法
31 int gcd2(int a, int b)
32 {
33     while(a != b)
34     {
35         if(a > b)
36             a -= b;
37         else
38             b -= a;
39     }
40     return a;
41 }
42 
43 /*
44 * 素数的筛选的一般优化方法
45 * 除非出题人失了智,这种优化一般来讲可以通过了
46 * 筛选 n 内的所有素数 
47 */
48 void getPrime(int n)
49 {
50     bool p[0xfffff]; // 默认为false, 测试了一下,这个大小可以通过 
51     for(ll i=2;i<n;i++)
52         if(i%2 != 0) p[i] = true;
53     for(ll i=3;i<=sqrt(n);i+=2){
54         if(p[i]){
55             for(ll j=i+i;j<=n;j+=i)
56                 p[j] = false;
57         }        
58     }
59     for(ll i=2;i<n;i++)
60         if(p[i])
61             cout<<i<<" ";
62         cout<<endl;
63 }
64 int main()
65 {
66     int a, b;
67     cin>>a>>b;
68     
69     cout<<"最大公约数:"<<gcd2(a, b)<<endl;
70     
71     cout<<"最小公倍数:"<<(a*b)/gcd(a, b)<<endl;
72     // 100以内的所有素数 
73     getPrime(100);
74     return 0;
75  } 
View Code

 

2019-01-13

16:53:19

 

公倍数与素数筛选

标签:view   iostream   void   sed   最小   typedef   isp   测试   最小公倍数   

原文地址:https://www.cnblogs.com/mabeyTang/p/10263249.html

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