數論學習

Posted lin88

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了數論學習相关的知识,希望对你有一定的参考价值。

歐拉函數篩法

歐拉函數:phi(i)為1到i之間與i互質的數的個數

 

 1 int prime[N],phi[N],isprime[N];
 2 void getpri()
 3 {
 4     int cnt=0;
 5     phi[1]=1;
 6     memset(isprime,0,sizeof(isprime));
 7     for(int i=2;i<N;++i)
 8     {
 9         if(!isprime[i])
10         {
11             prime[cnt++]=i;
12             isprime[i]=i;//質數條件isprime[i]==i
13             phi[i]=i-1;//質數的phi=i-1
14         }
15         for(int j=0;j<cnt&&i*prime[j]<N;++j)
16         {
17             isprime[i*prime[j]]=prime[j];
18             if(prime[j]>=isprime[i])//保證只有i的最小質因數的把i篩掉
19             {
20                 phi[i*prime[j]]=phi[i]*prime[j];//i與prime[j]不互質時
21                 break;
22             }
23             else
24                 phi[i*prime[j]]=phi[i]*(prime[j]-1);//i與prime[j]互質時
25         }
26     }
27 }

 

擴展歐幾里得

 1 ll exgcd(ll a,ll b,ll &x,ll &y)
 2 {
 3     if(b==0)
 4     {
 5         x=1;
 6         y=0;
 7         return a;
 8     }
 9     else
10     {
11         ll ret=exgcd(b,a%b,y,x);
12         y-=a/b*x;
13         return ret;
14     }
15 }

 

以上是关于數論學習的主要内容,如果未能解决你的问题,请参考以下文章

機器學習基石 (Machine Learning Foundations) 作业1 Q18-20的C++实现(pocket)

[RL學習篇][#3] 自動學習grid_mdp最佳的策略

一次測試即學習的案例

Java學習筆記(基本語法)

學習筆記:Linux常見題目解析分享

大二上學期學習生活總結