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

数论大整理(不定时更新)(虽然是懵着听下来的)x

时间:2017-04-20 23:16:48      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:bsp   close   eve   event   target   扩展欧几里得算法   代码   include   sed   

一、斐波那契数列:

技术分享
 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 int main()
 5 {
 6     double a,n,ans;
 7     cin>>n;
 8     //n--;  //(第一项是0时)
 9     a=sqrt(5);
10     ans =(a/5) * (pow( (1+a)/2 ,n) - pow((1-a)/2 ,n));
11     cout<<ans; 
12     return 0; 
13 }
通项公式
技术分享
 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstdio>
 4 using namespace std;
 5 int a[10001];
 6 int main()
 7 {
 8     int n;
 9     a[1]=1;
10     a[2]=1;
11     scanf("%d",&n);
12     for(int i=3;i<=n;i++)
13     {
14         a[i]=a[i-1]+a[i-2];
15     }
16     cout<<a[n];
17     return 0;
18 }
递推算法
技术分享
 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstdio>
 4 using namespace std;
 5 int a[10001];
 6 int f(int n)
 7 {
 8     if(n==1||n==2)return 1;
 9     else return f(n-1)+f(n-2);
10 }
11 int main()
12 {
13     int n;
14     a[1]=1;
15     a[2]=1;
16     scanf("%d",&n);
17     printf("%d",f(n));
18     return 0;
19 }
递归算法

二、素数:

详细请见http://www.cnblogs.com/zxqxwnngztxx/p/6735297.html

在这里仅仅给出线性筛法求素数的代码:

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 
 6 using namespace std;
 7 
 8 const int MAXN=10001;
 9 
10 int vis[MAXN];
11 
12 int main()
13 {
14     int n;
15     scanf("%d",&n);
16     for(int i=2;i<=sqrt(n);i++)
17     {
18         if(vis[i]==0)
19         {
20             for(int j=i*i;j<=n;j=j+i)
21             {
22                 vis[j]=1;
23             }
24         }
25     }
26     for(int i=2;i<=n;i++)
27     {
28         if(vis[i]==0)
29         printf("%d ",i);
30     }
31     return 0;
32 }
线性筛法求素数

 三、(扩展)欧几里得算法(裴蜀定理):

详细请见:http://www.cnblogs.com/zxqxwnngztxx/p/6741002.html

codevs有道题(同余方程)可以去做做试试:http://codevs.cn/problem/1200/

技术分享
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,m,r;
 6     cin>>m>>n;
 7     r=m%n;
 8     while(r!=0)
 9     {
10         m=n;
11         n=r;
12         r=m%n;
13     }
14     cout<<n;
15 }
欧几里得算法
技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 
 5 using namespace std;
 6 
 7 long long exgcd(long long a,long long b,long long &x,long long &y)
 8 {
 9     if(b==0)
10     {
11         x=1;
12         y=0;
13         return a;
14     }
15     long long r=exgcd(b,a%b,x,y),t=x;
16     x=y;y=t-y*(a/b);
17     return r; 
18 }
19 
20 int main()
21 {
22     long long a1,b1,x1,y1;
23     cin>>a1>>b1;
24     exgcd(a1,b1,x1,y1);
25     while(x1<0) x1+=b1;
26     cout<<x1;
27     return 0;
28 } 
扩展欧几里得算法

 

数论大整理(不定时更新)(虽然是懵着听下来的)x

标签:bsp   close   eve   event   target   扩展欧几里得算法   代码   include   sed   

原文地址:http://www.cnblogs.com/zxqxwnngztxx/p/6740950.html

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