Ejercicios para Practicar Python
Ejercicios para Practicar Python
Ejercicios para Practicar Python
Los nmeros combinatorios, mejor conocidos como coeficientes binomiales, provienen de dos mbitos. La primera de ellas es la combinatoria:
responde a cuntos conjuntos de k elementos distintos podemos
hacer si
tenemos n elementos. A este nmero se le denota por nk . Por otro lado,
aparecen en el desarrollo del binomio de Newton
!
n
X
n k nk
n
(x + y) =
x y
k
k =0
2. Existe frmulas recursivas para los coeficientes binomiales que podran usarse para calcularlos. En este caso, usamos que
!
!
!
n
n1
n1
=
+
k
k
k 1
con k0 = kk = 1 para cualquier k. Usa estas frmulas para escribir una funcin recursiva que calcule los coeficientes binomiales.
Sabras reprogramar el cdigo para evitar la recursin usando esta
frmula?
3. Supongamos que k > n k. La fraccin que define a nk permite
simplificar a
!
n
n(n 1) (k + 1)
=
(1)
k
(n k) 2 1
Usa esta simplificacin para escribir otro cdigo que calcule el coeficiente binomial.
4. Se puede reescribir (1) como
! Y
k
n
n +1i
.
=
i
k
i=1
Inspirados en este producto, pensamos que es posible escribir el siguiente cdigo
def binomial(n,k):
bin_coeff=1
for i in range(1,k+1):
# Running the integer numbers from 1 to k
bin_coeff*=(n+1-i)/i
return bin_coeff
Page 2
= time.time()
"hello"
time.time()
end - start
Page 3
lista que contenga todos los primos que divida a n repetidos segn su
multiplicidad.
La funcin de Euler o funcin indicatriz de Euler se define sobre los
nmeros naturales. Dado n, (n) es el nmero de enteros menores o iguales
a n que son coprimos1 a n.
9. Escribe una funcin que, dado n entero positivo, calcule (n) a partir
de la definicin. Usa para ello el algoritmo del mximo comn divisor
que aqu presentamos:
def gcd(a, b):
"""Calculate the Greatest Common Divisor of a and b.
Unless b==0, the result will have the same sign as b (so
that when b is divided by it, the result comes out
positive).
"""
while b:
a, b = b, a %b
return a
Page 4
entonces
(n) = (p1 1)p1k1 1 (p2 1)p2k2 1 (pr 1)prkr .
(2)
11. Dado un nmero entero n, escribe una funcin que te devuelva (n)
usando la frmula del problema anterior.
12. Tambin existe otra frmula:
(n) = n
Y
p|n
1
p
x n1 /2
si x n1 es par,
xn =
3x n1 + 1 si x n1 es impar.
Page 5
Page 6
n
Dados x y n, existe una forma de
aproximar x. Por ejemplo, se sabe
que los babilonios aproximaron 2 mediante el siguiente procedimiento:
comenzaban con un nmero, pongamos por ejemplo 2, y definimos la
sucesin de manera recursiva
2x n
x n2 2
x n+1 = x n
x n2 a
2x n
con x 0 = a.
17. Escribe una funcin en Python que calcule la raz cuadrada de un
nmero x dado. El problema es dar un test de parada, es decir, dar una
condicin para que el programa termine y d un resultado. En este
caso, puedes tomar que |x n x n+1 | sea menor que un nmero pequeo
(digamos 106 ) y, al ocurrir esto, la computadora te devuelve x n+1 .
Es posible generalizar este mtodo para calcular la raz k-sima de un
nmero a R. Slo hay que modificar la sucesin a
x n+1 = x n
x nk a
kx nk1
donde
x 0 = a, aunque se puede tomar uno ms cercano al valor aproximado n a.
18. Escribe una funcin anloga al anterior donde calcule la raz k-sima
de un nmero a. El test de parada seguira siendo el mismo.
Page 7