Implementación de algoritmos de teoría de números/Función φ de Euler

De testwiki
Ir a la navegación Ir a la búsqueda

La función φ de Euler (también llamada función indicatriz de Euler) es una función importante en teoría de números. Si n es un número natural, entonces φ(n) se define como el número de enteros positivos menores o iguales a n y coprimos con n, es decir, formalmente se puede definir como: Plantilla:Ecuación donde |·| significa la cantidad de números que cumplen la condición.

El valor de φ(n) puede calcularse empleando el teorema fundamental de la Aritmética: si

n=p1k1prkr

donde los pj son números primos distintos, entonces

φ(n)=(p11)p1k11(pr1)prkr1.

Esta última fórmula es un producto de Euler y a menudo se escribe como

φ(n)=np|n(11p)

donde los p son los distintos primos que dividen a n.

Descripción formal

Versión iterativa

De la definición general,

φ(n):=1knmcd(k,n)=11

y tomando por convenio que φ(0)=1, se obtiene la versión iterativa.

función φ(n)
  devolver 1 si n=0
  j0
  para k1..n hacer
     jj+1 si mcd(n,k)=1   
  devolver j

Esta versión tiene fácil implementación en una computadora, pero no es eficiente para valores grandes de n.

Versión por factorización

Se basa en la definición de la función mediante el producto de Euler

φ(n):=np|n(11p)

y utiliza algún algoritmo de factorización eficiente de propósito general como puede ser la criba general del cuerpo de números (GNFS).

Implementación en distintos lenguajes de programación

Matlab/Octave

En Matlab/Octave el algoritmo queda como sigue. Esta función gráfica los primeros m valores de la función (solo depende del número m).

function [] = phi(m),
con=0;
l=zeros(m,1);

for i=1:1:m,

	for j=1:1:i,
		if(gcd(i,j) == 1)
			con++;
		endif
	endfor

	l(i)=con;
	con=0;
endfor

plot(1:m,l,'.');

endfunction

Referencias

  • Octavian Cira, Florentin Smarandache, Solving Diophantine Equations, Infinite Study, ISBN 1599733072, pp:64-68