Introduction
Introduction Statistics Contact Development Disclaimer Help
Add exercise: [M13] The totient from factorisation - libzahl - big integer libr…
git clone git://git.suckless.org/libzahl
Log
Files
Refs
README
LICENSE
---
commit 87e84a9167666022bba7c73b5447791bf9f6797b
parent 18a0e23b2f2e37c56c4f0f9a3dd56c1c619a4468
Author: Mattias Andrée <[email protected]>
Date: Fri, 21 Oct 2016 05:20:55 +0200
Add exercise: [M13] The totient from factorisation
Signed-off-by: Mattias Andrée <[email protected]>
Diffstat:
M doc/exercises.tex | 57 +++++++++++++++++++++++++++++…
1 file changed, 57 insertions(+), 0 deletions(-)
---
diff --git a/doc/exercises.tex b/doc/exercises.tex
@@ -271,6 +271,38 @@ and $\varphi(1) = 1$.
+\item {[\textit{M13}]} \textbf{The totient from factorisation}
+
+Implement the function
+
+\vspace{-1em}
+\begin{alltt}
+ void totient_fact(z_t t, z_t *P,
+ unsigned long long int *K, size_t n);
+\end{alltt}
+\vspace{-1em}
+
+\noindent
+which calculates the totient $t = \varphi(n)$, where
+$n = \displaystyle{\prod_{i = 1}^n P_i^{K_i}} > 0$,
+and $P_i = \texttt{P[i - 1]} \in \textbf{P}$,
+$K_i = \texttt{K[i - 1]} \ge 1$. All values \texttt{P}.
+\texttt{P} and \texttt{K} make up the prime factorisation
+of $n$.
+
+You can use the following rules:
+
+\( \displaystyle{
+ \begin{array}{ll}
+ \varphi(1) = 1 & \\
+ \varphi(p) = p - 1 & \text{if } p \in \textbf{P} \\
+ \varphi(nm) = \varphi(n)\varphi(m) & \text{if } \gcd(n, m) = 1 \\
+ n^a\varphi(n) = \varphi(n^{a + 1}) &
+ \end{array}
+}\)
+
+
+
\item {[\textit{HMP32}]} \textbf{Modular tetration}
Implement the function
@@ -711,6 +743,31 @@ then, $\varphi(n) = \varphi|n|$.
+\item \textbf{The totient from factorisation}
+
+\vspace{-1em}
+\begin{alltt}
+void
+totient_fact(z_t t, z_t *P,
+ unsigned long long *K, size_t n)
+\{
+ z_t a, one;
+ zinit(a), zinit(one);
+ zseti(t, 1);
+ zseti(one, 1);
+ while (n--) \{
+ zpowu(a, P[n], K[n] - 1);
+ zmul(t, t, a);
+ zsub(a, P[n], one);
+ zmul(t, t, a);
+ \}
+ zfree(a), zfree(one);
+\}
+\end{alltt}
+\vspace{-1em}
+
+
+
\item \textbf{Modular tetration}
Let \texttt{totient} be Euler's totient function.
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.