尤拉函式初步探尋
阿新 • • 發佈:2018-12-01
一:什麼是尤拉函式?
定義:在數論,對正整數n,尤拉函式是小於或等於n的正整數中與n互質的數的數目。(PS:,在小於等於8的數中與與8互質的數是:1, 3, 5, 7;共四個);
二:尤拉函式有什麼用?
由定義可知,尤拉函式可以求出小於等於n的正整數中與n互質的數的個數;
三:尤拉函式有什麼性質?
1:若n與m互質,則有;
2:若n為奇數,則有;
3:若p是素數,a是正整數,則有;
4:;其中p1, p2, p3, ···,pk是n的所有質因數;
5:對於正整數n有:;d為所有能整出n的數,即n的所有正因子;
6:令表示小於等於n的數中與n互質的數的和,則有
四:程式碼如何寫?
1:下邊是直接求;
int oula(int n)
{
int rea=n;
for(int i=2; i*i<=n; i++)
if(n%i==0)//第一次找到的必為素因子
{
rea=rea-rea/i;
do
n/=i;//把該素因子全部約掉
while(n%i==0);
}
if(n>1)
rea=rea-rea/n;
return rea;
}
2:遞推尤拉函式,打表;
for(i=1; i<=maxn; i++)
p[i]=i;
for(i=2; i<=maxn; i+=2)
p[i]/=2;
for(i=3; i<=maxn; i+=2)
if(p[i]==i)
{
for(j=i; j<=maxn; j+=i)
p[j]=p[j]/i*(i-1);
}