0x32 3 互質與尤拉函式

2022-09-19 03:30:10 字數 1468 閱讀 6024

互質定義

對\(\forall a, b \in \mathbb n\),若 \(\gcd(a, b)=1\),則稱\(a, b\)互質。

注:\(\gcd(a, b, c)=1\)稱為\(a, b, c\)互質。注意與三個數兩兩互質區分。

尤拉函式的定義

\(1~n\)中與\(n\)互質的數的個數稱為尤拉函式,記為$ \varphi (n)$。

\[\varphi (p^k) = p^k - p^

\]\[\varphi (mn) = \varphi (m)\varphi (n)

\]練習:

(1)若\(\varphi (n) = n / 2\)

(2)若 \(\varphi (n) = n / 3\)

(3)若\(\varphi (n ) = n / 6\)

求滿足條件的n的可能的值。

求尤拉函式(對單個數n,時間複雜度\(o(\sqrt n)\))

int phi(int n)

}if (n > 1) ans = ans / n * (n - 1);

}

求2 ~ n中每個數的尤拉函式(時間複雜度\(o(nloglogn)\)

void euler(int n)}}

線性時間求2 ~ n中每個數的尤拉函式(時間複雜度\(o(n)\)

若\(p \mid n\)且 \(p^2 \mid n\),則 $ \varphi (n) = \varphi (n/p) * p\(

若\)p \mid n$且 \(p^2 \nmid n\),則$ \varphi (n) = \varphi (n/p) * (p - 1)$

int prime[n], m;  // 用來儲存質數,m表示當前質數的個數

bool v[n]; // v[i] = 1表示i不是質數

int phi[n]; // 記錄i的尤拉函式值

void euler(int n)

for (int j = 1; j <= m && prime[j] <= n / i; j++)

phi[i * prime[j]] = phi[i] * (prime[j] - 1);

} }

}

在乙個平面直角座標系的第一象限內,如果乙個點(x,y)與原點(0,0)的連線中沒有通過其他任何點,則稱該點在原點處是可見的。

例如,點(4,2)就是不可見的,因為它與原點的連線會通過點(2,1)。

部分可見點與原點的連線如下圖所示:

編寫乙個程式,計算給定整數n的情況下,滿足0≤x,y≤n

的可見點(x,y)的數量(可見點不包括原點)。

尤拉函式求互質對數和尤拉降冪

尤拉函式求互質對數 尤拉函式 直接上 include include include includeusing namespace std int oular int n if n 1 return ans int main return 0 尤拉函式素數篩 暫未理解 include include...

尤拉函式與尤拉降冪

尤拉函式 對於正整數 n 尤拉函式是小於或等於 n 的正整數中與 n 互質的數的數目。varphi 1 1 除了1之外,所有正整數與它本身都不互質 對於質數 p varphi p p 1 sum varphi d n 其中 d 是 n 的因數 尤拉函式是積性函式,若 m,n 互質,則有 varphi...

尤拉函式(求與n互質的數的個數)

求解與n 1 n 1 互質的質因子的個數 注釋 解析 定義 對於正整數 n,n 是小於或等於 n的正整數中,與 n互質的數的數目。例如 8 4,因為1,3 5,7 均和8互質。性質 1.若 p是質數,p p 1.2.若n是質數p的 k次冪,n p 1 p k 1 因為除了 p的倍數都與 n互質 p ...