Primes and factors

This commit is contained in:
Antti H S Laaksonen 2017-01-11 19:56:44 +02:00
parent c06354cdea
commit d348ef22ce
1 changed files with 221 additions and 223 deletions

View File

@ -1,19 +1,19 @@
\chapter{Number theory} \chapter{Number theory}
\index{lukuteoria@lukuteoria} \index{number theory}
\key{Lukuteoria} on kokonaislukuja tutkiva \key{Number theory} is a branch of mathematics
matematiikan ala, jonka keskeinen that studies integers.
käsite on lukujen jaollisuus. Number theory is a fascinating field,
Lukuteoriassa on kiehtovaa, että monet kokonaislukuihin because many questions involving integers
liittyvät kysymykset ovat hyvin vaikeita ratkaista, are very difficult to solve even if they
vaikka ne saattavat näyttää päältä päin yksinkertaisilta. seem simple at first glance.
Tarkastellaan esimerkkinä seuraavaa yhtälöä: As an example, let's consider the following equation:
\[x^3 + y^3 + z^3 = 33\] \[x^3 + y^3 + z^3 = 33\]
On helppoa löytää kolme reaalilukua $x$, $y$ ja $z$, It's easy to find three real numbers $x$, $y$ and $z$
jotka toteuttavat yhtälön. Voimme valita that satisfy the equation.
esimerkiksi For example, we can choose
\[ \[
\begin{array}{lcl} \begin{array}{lcl}
x = 3, \\ x = 3, \\
@ -21,152 +21,151 @@ y = \sqrt[3]{3}, \\
z = \sqrt[3]{3}.\\ z = \sqrt[3]{3}.\\
\end{array} \end{array}
\] \]
Sen sijaan kukaan ei tiedä, onko olemassa However, nobody knows if there are any three
kolmea \emph{kokonaislukua} $x$, $y$ ja $z$, \emph{integers} $x$, $y$ and $z$
jotka toteuttaisivat yhtälön, vaan kyseessä that would satisfy the equation, but this
on avoin lukuteorian ongelma. is an open problem in number theory.
Tässä luvussa tutustumme lukuteorian peruskäsitteisiin ja In this chapter, we will focus on basic concepts
-algoritmeihin. and algorithms in number theory.
Lähdemme liikkeelle lukujen jaollisuudesta, We will start by discussing divisibility of numbers
johon liittyvät keskeiset algoritmit ovat and important algorithms for primality testing
alkuluvun tarkastaminen sekä luvun jakaminen tekijöihin. and factorization.
\section{Alkuluvut ja tekijät} \section{Primes and factors}
\index{jaollisuus@jaollisuus} \index{divisibility}
\index{jakaja@jakaja} \index{factor}
\index{tekijx@tekijä} \index{divisor}
Luku $a$ on luvun $b$ \key{jakaja} eli \key{tekijä},
jos $b$ on jaollinen $a$:lla.
Jos $a$ on $b$:n jakaja,
niin merkitään $a \mid b$,
ja muuten merkitään $a \nmid b$.
Esimerkiksi luvun 24 jakajat ovat 1, 2, 3, 4, 6, 8, 12 ja 24.
\index{alkuluku@alkuluku} A number $a$ is a \key{factor} or \key{divisor} of a number $b$
\index{alkutekijxhajotelma@alkutekijähajotelma} if $b$ is divisible by $a$.
If $a$ is a factor of $b$,
we write $a \mid b$, and otherwise we write $a \nmid b$.
For example, the factors of the number 24 are
1, 2, 3, 4, 6, 8, 12 and 24.
Luku $n$ on \key{alkuluku}, jos sen ainoat \index{prime}
positiiviset jakajat ovat 1 ja $n$. \index{prime decomposition}
Esimerkiksi luvut 7, 19 ja 41 ovat alkulukuja.
Luku 35 taas ei ole alkuluku, koska se voidaan A number $n>1$ is a \key{prime}
jakaa tekijöihin $5 \cdot 7 = 35$. if its only positive factors are 1 and $n$.
Jokaiselle luvulle $n>1$ on olemassa yksikäsitteinen For example, the numbers 7, 19 and 41 are primes.
\key{alkutekijähajotelma} The number 35 is not a prime because it can be
divided into factors $5 \cdot 7 = 35$.
For each number $n>1$, there is a unique
\key{prime factorization}
\[ n = p_1^{\alpha_1} p_2^{\alpha_2} \cdots p_k^{\alpha_k},\] \[ n = p_1^{\alpha_1} p_2^{\alpha_2} \cdots p_k^{\alpha_k},\]
missä $p_1,p_2,\ldots,p_k$ ovat alkulukuja where $p_1,p_2,\ldots,p_k$ are primes and
ja $\alpha_1,\alpha_2,\ldots,\alpha_k$ ovat positiivisia $\alpha_1,\alpha_2,\ldots,\alpha_k$ are positive numbers.
lukuja. Esimerkiksi luvun 84 alkutekijähajotelma on For example, the prime factorization for the number 84 is
\[84 = 2^2 \cdot 3^1 \cdot 7^1.\] \[84 = 2^2 \cdot 3^1 \cdot 7^1.\]
Luvun $n$ \key{jakajien määrä} on The \key{number of factors} of a number $n$ is
\[\tau(n)=\prod_{i=1}^k (\alpha_i+1),\] \[\tau(n)=\prod_{i=1}^k (\alpha_i+1),\]
koska alkutekijän $p_i$ kohdalla on $\alpha_i+1$ because for each prime $p_i$, there are
tapaa valita, montako kertaa alkutekijä $\alpha_i+1$ ways to choose how many times
esiintyy jakajassa. it appears in the factor.
Esimerkiksi luvun 84 jakajien määrä For example, the number of factors
on $\tau(84)=3 \cdot 2 \cdot 2 = 12$. of the number 84 is
Jakajat ovat $\tau(84)=3 \cdot 2 \cdot 2 = 12$.
1, 2, 3, 4, 6, 7, 12, 14, 21, 28, 42 ja 84. The factors are
1, 2, 3, 4, 6, 7, 12, 14, 21, 28, 42 and 84.
Luvun $n$ \key{jakajien summa} on The \key{sum of factors} of $n$ is
\[\sigma(n)=\prod_{i=1}^k (1+p_i+\ldots+p_i^{\alpha_i}) = \prod_{i=1}^k \frac{p_i^{a_i+1}-1}{p_i-1},\] \[\sigma(n)=\prod_{i=1}^k (1+p_i+\ldots+p_i^{\alpha_i}) = \prod_{i=1}^k \frac{p_i^{a_i+1}-1}{p_i-1},\]
missä jälkimmäinen muoto perustuu geometriseen summaan. where the latter form is based on the geometric sum formula.
Esimerkiksi luvun 84 jakajien summa on For example, the sum of factors of the number 84 is
\[\sigma(84)=\frac{2^3-1}{2-1} \cdot \frac{3^2-1}{3-1} \cdot \frac{7^2-1}{7-1} = 7 \cdot 4 \cdot 8 = 224.\] \[\sigma(84)=\frac{2^3-1}{2-1} \cdot \frac{3^2-1}{3-1} \cdot \frac{7^2-1}{7-1} = 7 \cdot 4 \cdot 8 = 224.\]
Luvun $n$ \key{jakajien tulo} on The \key{product of factors} of $n$ is
\[\mu(n)=n^{\tau(n)/2},\] \[\mu(n)=n^{\tau(n)/2},\]
koska jakajista voidaan muodostaa because we can form $\tau(n)/2$ pairs from the factors,
$\tau(n)/2$ paria, joiden jokaisen tulona on $n$. each with product $n$.
Esimerkiksi luvun 84 jakajista muodostuvat parit For example, the factors of the number 84
$1 \cdot 84$, $2 \cdot 42$, $3 \cdot 28$, jne., produce the pairs
ja jakajien tulo on $\mu(84)=84^6=351298031616$. $1 \cdot 84$, $2 \cdot 42$, $3 \cdot 28$, etc.,
and the product of the factors is $\mu(84)=84^6=351298031616$.
%\index{tzydellinen luku@täydellinen luku} \index{perfect number}
\index{txydellinen luku@täydellinen luku}
Luku $n$ on \key{täydellinen}, jos $n=\sigma(n)-n$ A number $n$ is \key{perfect} if $n=\sigma(n)-n$,
eli luku on yhtä suuri kuin summa sen jakajista i.e., the number equals the sum of its divisors
välillä $1 \ldots n-1$. between $1 \ldots n-1$.
Esimerkiksi luku 28 on täydellinen, koska For example, the number 28 is perfect because
se muodostuu summana $1+2+4+7+14$. it equals the sum $1+2+4+7+14$.
\subsubsection{Alkulukujen määrä} \subsubsection{Number of primes}
On helppoa osoittaa, että alkulukuja on äärettömästi. It is easy to show that there is an infinite number
Jos nimittäin alkulukuja olisi äärellinen määrä, of primes.
voisimme muodostaa joukon $P=\{p_1,p_2,\ldots,p_n\}$, If the number would be finite,
joka sisältää kaikki alkuluvut. we could construct a set $P=\{p_1,p_2,\ldots,p_n\}$
Esimerkiksi $p_1=2$, $p_2=3$, $p_3=5$, jne. that contains all the primes.
Nyt kuitenkin voisimme muodostaa uuden alkuluvun For example, $p_1=2$, $p_2=3$, $p_3=5$, and so on.
\[p_1 p_2 \cdots p_n+1,\] However, using this set, we could form a new prime
joka on kaikkia $P$:n lukuja suurempi. \[p_1 p_2 \cdots p_n+1\]
Koska tätä lukua ei ole joukossa $P$, that is larger than all elements in $P$.
syntyy ristiriita ja alkulukujen määrän on This is a contradiction, and the number of the primes
pakko olla ääretön. has to be infinite.
\subsubsection{Alkulukujen tiheys} \subsubsection{Density of primes}
Alkulukujen tiheys tarkoittaa, kuinka usein alkulukuja The density of primes means how often there are primes
esiintyy muiden lukujen joukossa. among the numbers.
Merkitään funktiolla $\pi(n)$, Let $\pi(n)$ denote the number of primes between
montako alkulukua on välillä $1 \ldots n$. $1 \ldots n$. For example, $\pi(10)=4$ because
Esimerkiksi $\pi(10)=4$, koska välillä $1 \ldots 10$ there are 4 primes between $1 \ldots 10$: 2, 3, 5 and 7.
on alkuluvut 2, 3, 5 ja 7.
On mahdollista osoittaa, että It's possible to show that
\[\pi(n) \approx \frac{n}{\ln n},\] \[\pi(n) \approx \frac{n}{\ln n},\]
mikä tarkoittaa, että alkulukuja esiintyy which means that primes appear quite often.
varsin usein. Esimerkiksi alkulukujen määrä For example, the number of primes between
välillä $1 \ldots 10^6$ on $\pi(10^6)=78498$ $1 \ldots 10^6$ is $\pi(10^6)=78498$,
ja $10^6 / \ln 10^6 \approx 72382$. and $10^6 / \ln 10^6 \approx 72382$.
\subsubsection{Konjektuureja} \subsubsection{Conjectures}
Alkulukuihin liittyy useita \emph{konjektuureja} There are many \emph{conjectures} involving primes.
eli lauseita, joiden uskotaan olevan tosia mutta Most people think that the conjectures are true,
joita kukaan ei ole onnistunut todistamaan tähän mennessä. but nobody has been able to prove them.
Kuuluisia konjektuureja ovat seuraavat: For example, the following conjectures are famous:
\begin{itemize} \begin{itemize}
\index{Goldbachin konjektuuri@Goldbachin konjektuuri} \index{Goldbach's conjecture}
\item \key{Goldbachin konjektuuri}: \item \key{Goldbach's conjecture}:
Jokainen parillinen kokonaisluku $n>2$ voidaan esittää Each even integer $n>2$ can be represented as a
muodossa $n=a+b$ niin, että $a$ ja $b$ sum $n=a+b$ so that both $a$ and $b$ are primes.
ovat alkulukuja. \index{twin prime}
\index{alkulukupari@alkulukupari} \item \key{twin prime}:
\item \key{Alkulukuparit}: There is an infinite number of pairs
On olemassa äärettömästi pareja muotoa $\{p,p+2\}$, of the form $\{p,p+2\}$,
joissa sekä $p$ että $p+2$ on alkuluku. where both $p$ and $p+2$ are primes.
\index{Legendren konjektuuri@Legendren konjektuuri} \index{Legendre's conjecture}
\item \key{Legendren konjektuuri}: \item \key{Legendre's conjecture}:
Lukujen $n^2$ ja $(n+1)^2$ välillä on aina alkuluku, There is always a prime between numbers
kun $n$ on mikä tahansa positiivinen kokonaisluku. $n^2$ and $(n+1)^2$, where $n$ is any positive integer.
\end{itemize} \end{itemize}
\subsubsection{Perusalgoritmit} \subsubsection{Basic algorithms}
Jos luku $n$ ei ole alkuluku, If a number $n$ is not prime,
niin sen voi esittää muodossa $a \cdot b$, it can be represented as a product $a \cdot b$,
missä $a \le \sqrt n$ tai $b \le \sqrt n$, where $a \le \sqrt n$ or $b \le \sqrt n$,
minkä ansiosta sillä on varmasti so it certainly has a factor between $2 \ldots \sqrt n$.
tekijä välillä $2 \ldots \sqrt n$. Using this observation, we can both test
Tämän havainnon avulla voi tarkastaa ajassa $O(\sqrt n)$, if a number is prime and find the prime factorization
onko luku alkuluku, of a number in $O(\sqrt n)$ time.
sekä myös selvittää ajassa $O(\sqrt n)$
luvun alkutekijät.
Seuraava funktio \texttt{alkuluku} tutkii, The following function \texttt{prime} checks
onko annettu luku $n$ alkuluku. if the given number $n$ is prime.
Funktio koettaa jakaa lukua kaikilla luvuilla The function tries to divide the number by
välillä $2 \ldots \sqrt n$, ja jos mikään all numbers between $2 \ldots \sqrt n$,
luvuista ei jaa $n$:ää, niin $n$ on alkuluku. and if none of them divides $n$, then $n$ is prime.
\begin{lstlisting} \begin{lstlisting}
bool alkuluku(int n) { bool prime(int n) {
if (n < 2) return false; if (n < 2) return false;
for (int x = 2; x*x <= n; x++) { for (int x = 2; x*x <= n; x++) {
if (n%x == 0) return false; if (n%x == 0) return false;
@ -176,17 +175,17 @@ bool alkuluku(int n) {
\end{lstlisting} \end{lstlisting}
\noindent \noindent
Seuraava funktio \texttt{tekijat} muodostaa The following function \texttt{factors}
vektorin, joka sisältää luvun $n$ constructs a vector that contains the prime
alkutekijät. factorization of $n$.
Funktio jakaa $n$:ää sen alkutekijöillä ja lisää The function divides $n$ by its prime factors,
niitä samaan aikaan vektoriin. and adds them to the vector.
Prosessi päättyy, kun jäljellä on luku $n$, The process ends when the remaining number $n$
jolla ei ole tekijää välillä $2 \ldots \sqrt n$. has no factors between $2 \ldots \sqrt n$.
Jos $n>1$, se on alkuluku ja viimeinen tekijä. If $n>1$, it is prime and the last factor.
\begin{lstlisting} \begin{lstlisting}
vector<int> tekijat(int n) { vector<int> factors(int n) {
vector<int> f; vector<int> f;
for (int x = 2; x*x <= n; x++) { for (int x = 2; x*x <= n; x++) {
while (n%x == 0) { while (n%x == 0) {
@ -199,42 +198,36 @@ vector<int> tekijat(int n) {
} }
\end{lstlisting} \end{lstlisting}
Huomaa, että funktio lisää jokaisen Note that each prime factor appears in the vector
alkutekijän vektoriin as many times as it divides the number.
niin monta kertaa, kuin kyseinen For example, $24=2^3 \cdot 3$,
alkutekijä jakaa luvun. so the result of the function is $[2,2,2,3]$.
Esimerkiksi $24=2^3 \cdot 3$,
joten funktio muodostaa vektorin $[2,2,2,3]$.
\subsubsection{Eratostheneen seula} \subsubsection{Sieve of Eratosthenes}
\index{Eratostheneen seula@Eratostheneen seula} \index{sieve of Eratosthenes}
\key{Eratostheneen seula} on esilaskenta-algoritmi, The \key{sieve of Eratosthenes} is a preprocessing
jonka suorituksen jälkeen mistä tahansa algorithm that builds an array using which we
välin $2 \ldots n$ luvusta pystyy tarkastamaan can efficiently check if a given number between $2 \ldots n$
nopeasti, onko se alkuluku, is prime and find one prime factor of the number.
sekä etsimään yhden luvun alkutekijän,
jos luku ei ole alkuluku.
Algoritmi luo taulukon $\texttt{a}$, The algorithm builds an array $\texttt{a}$
jossa on käytössä indeksit $2,3,\ldots,n$. where indices $2,3,\ldots,n$ are used.
Taulukossa $\texttt{a}[k]=0$ tarkoittaa, The value $\texttt{a}[k]=0$ means
että $k$ on alkuluku, that $k$ is prime,
ja $\texttt{a}[k] \neq 0$ tarkoittaa, and the value $\texttt{a}[k] \neq 0$
että $k$ ei ole alkuluku. means that $k$ is not a prime but one
Jälkimmäisessä tapauksessa $\texttt{a}[k]$ of its prime factors is $\texttt{a}[k]$.
on yksi $k$:n alkutekijöistä.
Algoritmi käy läpi välin The algorithm iterates through the numbers
$2 \ldots n$ luvut yksi kerrallaan. $2 \ldots n$ one by one.
Aina kun vastaan tulee uusi alkuluku $x$, Always when a new prime $x$ is found,
niin algoritmi merkitsee taulukkoon, että $x$:n moninkerrat the algorithm records that the multiples
$2x,3x,4x,\ldots$ eivät ole alkulukuja, of $x$ ($2x,3x,4x,\ldots$) are not primes
koska niillä on alkutekijä $x$. because the number $x$ divides them.
Esimerkiksi jos $n=20$, For example, if $n=20$, the array becomes:
taulukosta tulee:
\begin{center} \begin{center}
\begin{tikzpicture}[scale=0.7] \begin{tikzpicture}[scale=0.7]
@ -285,10 +278,10 @@ taulukosta tulee:
\end{tikzpicture} \end{tikzpicture}
\end{center} \end{center}
Seuraava koodi toteuttaa The following code implements the sieve of
Eratostheneen seulan. Eratosthenes.
Koodi olettaa, että jokainen taulukon \texttt{a} The code assumes that each element in
alkio on aluksi 0. \texttt{a} is initially zero.
\begin{lstlisting} \begin{lstlisting}
for (int x = 2; x <= n; x++) { for (int x = 2; x <= n; x++) {
@ -299,80 +292,85 @@ for (int x = 2; x <= n; x++) {
} }
\end{lstlisting} \end{lstlisting}
Algoritmin sisäsilmukka suoritetaan The inner loop of the algorithm will be executed
$n/x$ kertaa tietyllä $x$:n arvolla, $n/x$ times for any $x$.
joten yläraja algoritmin ajankäytölle Thus, an upper bound for the running time
on harmoninen summa of the algorithm is the harmonic sum
\index{harmoninen summa@harmoninen summa} \index{harmonic sum}
\[\sum_{x=2}^n n/x = n/2 + n/3 + n/4 + \cdots + n/n = O(n \log n).\] \[\sum_{x=2}^n n/x = n/2 + n/3 + n/4 + \cdots + n/n = O(n \log n).\]
Todellisuudessa algoritmi on vielä nopeampi, In fact, the algorithm is even more efficient
koska sisäsilmukka suoritetaan vain, because the inner loop will be executed only if
jos luku $x$ on alkuluku. the number $x$ is prime.
Voidaan osoittaa, että algoritmin aikavaativuus It can be shown that the time complexity of the
on vain $O(n \log \log n)$ eli hyvin lähellä vaativuutta $O(n)$. algorithm is only $O(n \log \log n)$
that is very near to $O(n)$.
\subsubsection{Eukleideen algoritmi} \subsubsection{Euclid's algorithm}
\index{suurin yhteinen tekijx@suurin yhteinen tekijä} \index{greatest common divisor}
\index{pienin yhteinen moninkerta@pienin yhteinen moninkerta} \index{least common multiple}
\index{Eukleideen algoritmi@Eukleideen algoritmi} \index{Euclid's algorithm}
Lukujen $a$ ja $b$ \key{suurin yhteinen tekijä} eli $\textrm{syt}(a,b)$ The \key{greatest common divisor} of
on suurin luku, jolla sekä $a$ että $b$ on jaollinen. numbers $a$ and $b$, $\gcd(a,b)$,
Lukujen $a$ ja $b$ \key{pienin yhteinen moninkerta} eli $\textrm{pym}(a,b)$ is the greatest number that divides both $a$ and $b$,
on puolestaan pienin luku, joka on jaollinen sekä $a$:lla että $b$:llä. and the \key{least common multiple} of
Esimerkiksi $\textrm{syt}(24,36)=12$ ja $a$ and $b$, $\textrm{lcm}(a,b)$,
$\textrm{pym}(24,36)=72$. is the smallest number that is divisible by
both $a$ and $b$.
For example,
$\gcd(24,36)=12$ and
$\textrm{lcm}(24,36)=72$.
Suurimman yhteisen tekijän ja pienimmän yhteisen The greatest common divisor and the least common multiple
moninkerran välillä on yhteys are connected as follows:
\[\textrm{pym}(a,b)=\frac{ab}{\textrm{syt}(a,b)}.\] \[\textrm{lcm}(a,b)=\frac{ab}{\textrm{gcd}(a,b)}\]
\key{Eukleideen algoritmi} on tehokas tapa etsiä \key{Euclid's algorithm} provides an efficient way
suurin yhteinen tekijä. to find the greatest common divisor of two numbers.
Se laskee suurimman yhteisen tekijän kaavalla The algorithm is based on the formula
\begin{equation*} \begin{equation*}
\textrm{syt}(a,b) = \begin{cases} \textrm{gcd}(a,b) = \begin{cases}
a & b = 0\\ a & b = 0\\
\textrm{syt}(b,a \bmod b) & b \neq 0\\ \textrm{gcd}(b,a \bmod b) & b \neq 0\\
\end{cases} \end{cases}
\end{equation*} \end{equation*}
Esimerkiksi For example,
\[\textrm{syt}(24,36) = \textrm{syt}(36,24) \[\textrm{gcd}(24,36) = \textrm{gcd}(36,24)
= \textrm{syt}(24,12) = \textrm{syt}(12,0)=12.\] = \textrm{gcd}(24,12) = \textrm{gcd}(12,0)=12.\]
Eukleideen algoritmin aikavaativuus The time complexity of Euclid's algorithm
on $O(\log n)$, kun $n=\min(a,b)$. is $O(\log n)$ where $n=\min(a,b)$.
Pahin tapaus algoritmille on, jos luvut ovat The worst case is when
peräkkäiset Fibonaccin luvut. $a$ and $b$ are successive Fibonacci numbers.
Silloin algoritmi käy läpi kaikki pienemmät In this case, the algorithm goes through
peräkkäiset Fibonaccin luvut. all smaller Fibonacci numbers.
Esimerkiksi For example,
\[\textrm{syt}(13,8)=\textrm{syt}(8,5) \[\textrm{gcd}(13,8)=\textrm{gcd}(8,5)
=\textrm{syt}(5,3)=\textrm{syt}(3,2)=\textrm{syt}(2,1)=\textrm{syt}(1,0)=1.\] =\textrm{gcd}(5,3)=\textrm{gcd}(3,2)=\textrm{gcd}(2,1)=\textrm{gcd}(1,0)=1.\]
\subsubsection{Eulerin totienttifunktio} \subsubsection{Euler's totient function}
\index{suhteellinen alkuluku@suhteellinen alkuluku} \index{coprime}
\index{Eulerin totienttifunktio@Eulerin totienttifunktio} \index{Euler's totient function}
Luvut $a$ ja $b$ ovat suhteelliset alkuluvut, Numbers $a$ and $b$ are coprime
jos $\textrm{syt}(a,b)=1$. if $\textrm{gcd}(a,b)=1$.
\key{Eulerin totienttifunktio} $\varphi(n)$ \key{Euler's totient function} $\varphi(n)$
laskee luvun $n$ suhteellisten alkulukujen returns the number of coprime numbers to $n$
määrän välillä $1 \ldots n$. between $1 \ldots n$.
Esimerkiksi $\varphi(12)=4$, For example, $\varphi(12)=4$,
koska luvut 1, 5, 7 ja 11 ovat suhteellisia because the numbers 1, 5, 7 and 11
alkulukuja luvun 12:n kanssa. are coprime to the number 12.
Totienttifunktion arvon $\varphi(n)$ pystyy laskemaan The value of $\varphi(n)$ can be calculated
luvun $n$ alkutekijähajotelmasta kaavalla using the prime factorization of $n$
by the formula
\[ \varphi(n) = \prod_{i=1}^k p_i^{\alpha_i-1}(p_i-1). \] \[ \varphi(n) = \prod_{i=1}^k p_i^{\alpha_i-1}(p_i-1). \]
Esimerkiksi $\varphi(12)=2^1 \cdot (2-1) \cdot 3^0 \cdot (3-1)=4$. For example, $\varphi(12)=2^1 \cdot (2-1) \cdot 3^0 \cdot (3-1)=4$.
Huomaa myös, että $\varphi(n)=n-1$, Note that $\varphi(n)=n-1$ if $n$ is prime.
jos $n$ on alkuluku.
\section{Modulolaskenta} \section{Modulolaskenta}