欧拉定理和C语言实现 - win32版
歐拉定理
在數(shù)論中,歐拉定理(Euler Theorem,也稱費(fèi)馬-歐拉定理或歐拉函數(shù)定理)是一個(gè)關(guān)于同余的性質(zhì)。
歐拉定理有什么用?歐拉定理是RSA算法的核心。要實(shí)現(xiàn)RSA算法,需要編程實(shí)現(xiàn)此定理。
那么什么是同余?余,就是余數(shù);mod之后的余數(shù)。
同余
數(shù)論中的重要概念。給定一個(gè)正整數(shù)m,如果兩個(gè)整數(shù)a和b滿足a-b能夠被m整除,即(a-b)/m得到一個(gè)整數(shù),那么就稱整數(shù)a與b對模m同余,記作a≡b(mod m)。
對模m同余是整數(shù)的一個(gè)等價(jià)關(guān)系。
歐拉φ函數(shù)的值
通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn為x的所有質(zhì)因數(shù),x是不為0的整數(shù)。φ(1)=1(唯一和1互質(zhì)的數(shù)(小于等于1)就是1本身)。?
(注意:每種質(zhì)因數(shù)只一個(gè)。比如12=2*2*3 ?歐拉公式
那么φ(12)=12*(1-1/2)*(1-1/3)=4
若n是質(zhì)數(shù)p的k次冪,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因?yàn)槌藀的倍數(shù)外,其他數(shù)都跟n互質(zhì)。
設(shè)n為正整數(shù),以 φ(n)表示不超過n且與n互
素的正整數(shù)的個(gè)數(shù),稱為n的歐拉函數(shù)值,這里函數(shù)
φ:N→N,n→φ(n)稱為歐拉函數(shù)。
ψ(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("歐拉函數(shù)值"),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; }不同的歐拉函數(shù)值如下;
工程;?
?
總結(jié)
以上是生活随笔為你收集整理的欧拉定理和C语言实现 - win32版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wpf加载obj格式的3D模型图解
- 下一篇: React 组件学习