欧拉定理和C语言实现 - win32版
歐拉定理
在數論中,歐拉定理(Euler Theorem,也稱費馬-歐拉定理或歐拉函數定理)是一個關于同余的性質。
歐拉定理有什么用?歐拉定理是RSA算法的核心。要實現RSA算法,需要編程實現此定理。
那么什么是同余?余,就是余數;mod之后的余數。
同余
數論中的重要概念。給定一個正整數m,如果兩個整數a和b滿足a-b能夠被m整除,即(a-b)/m得到一個整數,那么就稱整數a與b對模m同余,記作a≡b(mod m)。
對模m同余是整數的一個等價關系。
歐拉φ函數的值
通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn為x的所有質因數,x是不為0的整數。φ(1)=1(唯一和1互質的數(小于等于1)就是1本身)。?
(注意:每種質因數只一個。比如12=2*2*3 ?歐拉公式
那么φ(12)=12*(1-1/2)*(1-1/3)=4
若n是質數p的k次冪,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因為除了p的倍數外,其他數都跟n互質。
設n為正整數,以 φ(n)表示不超過n且與n互
素的正整數的個數,稱為n的歐拉函數值,這里函數
φ:N→N,n→φ(n)稱為歐拉函數。
ψ(10)=10×(1-1/2)×(1-1/5)=4;
ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;
ψ(49)=49×(1-1/7)= =42;
碼;
#include <windows.h>using namespace std;int eular(int );int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {char szBuffer[100];int fai=eular(49);wsprintf(szBuffer, "%d",fai);MessageBox(NULL,szBuffer,TEXT("歐拉函數值"),0);return 0; }int eular(int n) { int ret=1,i; for(i=2;i*i<=n;i++) if(n%i==0) { n/=i,ret*=i-1; while(n%i==0) n/=i,ret*=i; } if(n>1){ ret*=n-1; //cout << n << endl;}return ret; }不同的歐拉函數值如下;
工程;?
?
總結
以上是生活随笔為你收集整理的欧拉定理和C语言实现 - win32版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wpf加载obj格式的3D模型图解
- 下一篇: React 组件学习