Ejercicios Python_curso_funciones
Ejercicios Python_curso_funciones
1. Existen múltiples formas de calcular el máximo común divisor de un conjunto de números, escriba
una función de nombre mcd que reciba dos números n1 y n2 como argumentos, y retorne el
máximo común divisor. Por ejemplo para los argumentos 10 y 15 debe retornar 5.
def mcd(n1, n2):
if(n2==0):
return n1
else:
return mcd(n2,n1%n2)
print (mcd(10,15))
2. Para muchas aplicaciones matemáticas, conocer la potencia de 2 más grande que es menor o
igual a cierto número, es muy útil. Escribe una función exponente, que dado un número n,
retorne el exponente de dicha potencia de 2 más grande. Por ejemplo, si el número es 65, tu
programa debe retornar 6, ya que 2⁶ = 64.
def exponente(n):
x=0
y=0
while y<n:
x=x+1
y=pow(2,x)
x=x-1
return x
res=exponente(65)
3. Considere que existen los números primos y los números pandigitales. Los números
pandigitales son aquellos que contienen todos los dígitos del 0 al 9 al menos una vez,
como el 1023478695. Escribe una función panprimo que determine si un número n es
pandigital y si al mismo tiempo, sus últimos 3 dígitos conforman un número primo,
retornando True o False según corresponda. Por ejemplo:
1) El número 2424643 cumple que sus últimos 3 dígitos conforman un número primo
(643), pero no es pandigital por lo tu función que debería retornar False.
Tip1: Puedes convertir un entero a una cadena de texto con el método str(numero),
y puedes verificar si alguna letra está en el esta cadena de texto haciendo if letra in
string: ...
Tip2: Un número es primo si solo es divisible por 1 y por sí mismo. Para obtener los
últimos tres dígitos, puedes obtener el resto del número en su división con 100.
def panprimo(n):
x = 0
tam = len(n)
if n.find('0') > -1:
x += 1
if n.find('1') > -1:
x += 1
if n.find('2') > -1:
x += 1
if n.find('3') > -1:
x += 1
if n.find('4') > -1:
x += 1
if n.find('5') > -1:
x += 1
if n.find('6') > -1:
x += 1
if n.find('7') > -1:
x += 1
if n.find('8') > -1:
x += 1
if n.find('9') > -1:
x += 1
n1 = n[tam - 3:tam]
if tam > 2 and x == 10:
num = int(n1)
for div in range(2, num):
if num % div == 0:
return False
return True
else:
return False
res=panprimo("10123485769")
print (res)