互質定義
對\(\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 ...