互いに素オイラー関数の研究ノート
互いに素
定義:
\(\ FORALL A、\ N \におけるB \) 、もし\(GCD(A、B)= 1 \)と呼ばれる、\(B \)プライム。
乗法機能
定義:
場合\(B \)プライム、ある\(F(AB&が)= F(A)* F(B)\)は、呼び出された関数\(F \)は乗法関数です。
自然:
場合\(Fは\)関数の積と算術の基本定理であり、\(N = \のprod \ limits_ 1} = {I ^ M ^ {P_I} C_I \) 、次いで\(F(N)= \のprodの\ limits_ 1} = {I MF ^(^ {P_I} C_I)\)。
オイラー機能
- 定義:
\(1 \ SIM N \)と\(N \)素数は、オイラー関数番号を呼び出しと呼ばれる\(\ varphi(N)\) 。
算術の基本定理、もし\(P_1 = ^ {N} P_2のC_1とC_2} {^ \ ^ cdots P_M C_m} {\) :は、\(\ varphi(N)= N * \ FRAC} {p_1-1 {P_1} * \ FRAC {p_2-1 } {P_2} \ cdots \ FRAC {P_M-1} {P_M} = N * \ PRODの\のlimits_ { 素数pの\ミッドN}(\ 1- FRAC {1} {P })\) 。
証明:
セット\(Pは\)である\(N \)素因数、\(1 \ SIM N \)で\(P \)複数コンセンサス\(N / Pの\) 。同様に、\(Q \)がされている(N \)を\する品質係数、である\(1 \ SIM N \)で\(Q \)の倍数である\(N / Q \) A。私たちはこれらの場合には\(N / P + N / Q \) 番号が削除され、その後、\(のp * Qが\)倍数は、二回裏追加する必要が除外されています。したがって、包含および除外によれば、\(N \ 1 \ SIM)がない\(N \)共通の素因数を含む\(P \)または\(Q \)のカウント数です。
\(N- \のFRAC {N} {P} - FRAC \ {N} {Q} + \ FRAC {N} {PQ} = N(1- FRAC {1} {P})(1- \ \ FRAC {1} {Q})\)
同様に、私たちがしなければならない(N \)\包含と除外の使用のすべての素因数の、あなたが得ることができます\(\ varphi(N)\) 。
- プロパティ
- \(\ nはFORALL> 1,1 \シムN \) と\(N- \)素数の和である\は(N * \ varphi(N)/ 2 \) 。
- もし\(B \)プライム、次いで\(\ varphi(AB&)= \ varphi(A)\ varphi(B)\) 。
- セット\(P \)があれば、素数である\(P \半ばのn \)と\(P ^ 2 \ MID N- \) 、その後、\(\ varphi(N)= \ varphi(N / P)* P \) 。
- セット\(P \)があれば、素数である\(P \半ばのn \)と\(P ^ 2 \ません| N- \) 、その後、\(\ varphi(N)= \ varphi(N / P)*(P -1)\) 。
- \(\和\ limits_ {D | N} \ varphi(D)= N \) 。
証明:
ので\(GCD(N、X)がGCD(N、NX)を\ =)ように、\(\ N-)が素数でない\(X、NX \)のペアで、平均値\(N / 2 \) 。したがって、\(N- \)の平均数が素数である\(N / 2 \) 、プロパティ\(1 \)が成立します。
オイラー関数の計算式、なぜなら\(GCD(A、B)= 1 \) 、彼らが持っていないことを除いて、(1 \)\の、計算が繰返さない以外除数FRAC \ \((1- {P} 1} {)\) 、プロパティ\(2 \)成り立ちます。
場合\(P \ミッドN \)と\(P ^ 2 \ N-MID \) 、次いで\(N、N / Pの\は ) 両方の分割、オイラー関数に従って計算、同じ品質係数を含みます商がされた(P-の\)\、の性質\(3 \)が設立されました。
もし\(P \半ばのn \)と\(P ^ 2 \ません| N- \) 、その後、\(。GCD(N、N- / P)= 1 \) 、\(\ varphi \)が乗法関数であります与えた\(\ varphi(N-)= \ varphi(N- / P)* \ varphi(P)を\) 。前記\(\ varphi(P)1-P = \) 、プロパティ\(4 \)が成立します。
セット\(F(N)= \ SUM \ limits_ {D |} N- \ varphi(D)\) 。乗算分配比比べリユース展開\(\ varphi \)の場合:与えるために、乗法関数である\(GCD(N、M)= 1 \) 、次いで\(F(NM)= \和の\ limits_ {D | NM} \ varphi(D) =(\和\ limits_ {D | N} \ varphi(D))*(\和\ limits_ {D | M} \ varphi(D))= F(N)* F( メートル)\) 。その\(Fは\)単一品質係数のために、関数の積であり、\(F(P ^ M)= \ SUM \ limits_ {D | P ^ M} \ varphi(D)= \ varphi(1)+ \ varphi。 (P)+ \ varphi(P ^ 2)+ \ cdots + \ varphi(P ^ m)を\) 加算の幾何学的配列に結合されている\(1 \) 、結果は\(P ^ Mの\) 。そう\(F(N)= \のprod \のlimits_ {I = 1} ^ MF(P_I ^ {C_I})= \のprod \のlimits_ {I = 1} ^ M P_I ^ {C_I} = N- \)の性質\ (5 \)が設立されました。
例
フェイス質問
溶液
被験者の分析は、に加えて、見出すことができる\((1,0)\)、\ ((0,1)\)と((1,1)\)\三点よりも、爪\((x、y)は\) 、見ることができる場合にのみ\(GCD(X、Y) = 1 \)が確立されます。
ネイルは、上はっきりと見ることができるように\(Y = xと\)対称のこの行ので、我々は半分だけを請求することができます。見ることができる座標系の釘右下ため、すべてのために満足\(2 \当量X \当量 N \) 有している\(1 \のLeq Y <X、GCD(X、Y)= 1 \) 。そのような\(Y軸\)番号が正確である\(\ varphi(X-)\) 。
要約すると、この質問に対する答えは\(I limits_ 3 2 + * \ SUM \ = {2} ^ N \のvarphi(I)\) 。私たちはしなければならない見つけることです\(シムの\ N \ 2)の各番号のオイラー関数を。
コード
#include<map>
#include<set>
#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
template<class T>void read(T &x)
{
x=0;char k=getchar();int f=1;
for(;k>'9'||k<'0';k=getchar()) if(k=='-') f=-1;
for(;k>='0'&&k<='9';k=getchar()) x=x*10+k-'0';
x*=f;
}
int n,ans;
int prime[40005],tot,phi[40005];
bool is_not_pr[40005];
inline void prepare()
{
phi[1]=1;
for(int i=2;i<=n;i++)
{
if(!is_not_pr[i])
{
prime[++tot]=i;
phi[i]=i-1;
}
for(int j=1;j<=tot&&i*prime[j]<n;j++)
{
is_not_pr[i*prime[j]]=1;
if(i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
else phi[i*prime[j]]=phi[i]*phi[prime[j]];
}
}
}
int main()
{
read(n);
if(n==1) printf("0");
else
{
prepare();
for(int i=2;i<n;i++) ans+=phi[i];
printf("%d\n",ans*2+3);
}
return 0;
}
概要
メビウス反転は、問題のより重要なクラスである外観を取るために時間を取るために - その拡張しながら、問題のこの部分は、変換の問題で良いことに、問題は、モデルを実行するために簡略化されています。