Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión o
creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición.
Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.
Revisión actual |
Tu texto |
Línea 1: |
Línea 1: |
| {{Back|Algoritmos y Estructuras de Datos III}}
| |
|
| |
| ==Ejercicio 02.01:== | | ==Ejercicio 02.01:== |
| log(2,n) + 1 | | log(2,n) |
|
| |
|
| ==Ejercicio 02.02:== | | ==Ejercicio 02.02:== |
Línea 64: |
Línea 62: |
| <br>a) | | <br>a) |
| <br>b) | | <br>b) |
| <pre>
| |
| import math
| |
| import sys
| |
|
| |
| def primes(n):
| |
| if n==2: return [2]
| |
| elif n<2: return []
| |
| s=range(3,n+1,2)
| |
| mroot = n ** 0.5
| |
| half=(n+1)/2-1
| |
| i=0
| |
| m=3
| |
| while m <= mroot:
| |
| if s[i]:
| |
| j=(m*m-3)/2
| |
| s[j]=0
| |
| while j<half:
| |
| s[j]=0
| |
| j+=m
| |
| i=i+1
| |
| m=2*i+3
| |
| return [2]+[x for x in s if x]
| |
|
| |
| def isprime(aNumber):
| |
| if aNumber < 2: return False
| |
| if aNumber == 2: return True
| |
| if (( aNumber / 2 ) * 2 == aNumber) :
| |
| return False
| |
| else:
| |
| klist = primes(int(math.sqrt(aNumber+1)))
| |
| for k in klist[1:]:
| |
| if (( aNumber / k ) * k == aNumber ): return False
| |
| return True
| |
|
| |
|
| |
| a = int(sys.argv[1])
| |
| b = int(sys.argv[2])
| |
| i = 2
| |
|
| |
| while(i < max(a,b)):
| |
| if isprime(a):
| |
| if (b%a == 0):
| |
| b = b/a
| |
| a = a/a
| |
| else:
| |
| break
| |
| elif isprime(b):
| |
| if a%b == 0:
| |
| a = a/b
| |
| b = b/b
| |
| else:
| |
| break
| |
| else:
| |
| if isprime(i):
| |
| if(a%i == 0 and b%i == 0):
| |
| a = a/i
| |
| b = b/i
| |
| else:
| |
| i = i + 1
| |
| else:
| |
| i = i + 1
| |
|
| |
| print str(a) + "/" + str(b)
| |
| </pre>
| |
| <br>c) | | <br>c) |
| ==Ejercicio 02.09:== | | ==Ejercicio 02.09:== |
| <br>a) No recursivo | | <br>a) |
| <pre>
| |
| import math
| |
| import sys
| |
| | |
| ##mientras b ? 0 repetir las tres instrucciones siguientes:
| |
| ##
| |
| ## r ? resto de a entre b (dar a r el valor del resto de a por b)
| |
| ## a ? b (el nuevo valor de a es el antiguo valor de b)
| |
| ## b ? r (el nuevo valor de b es el valor de r)
| |
| ##
| |
| ##* el resultado es a (su último valor).
| |
| | |
| a = sys.argv[1]
| |
| b = sys.argv[2]
| |
| a = float(a)
| |
| b = float(b)
| |
| | |
| while b != 0:
| |
| r = a % b
| |
| a = b
| |
| b = r
| |
| | |
| print a
| |
| </pre>
| |
| Recursivo
| |
| <pre>
| |
| import sys
| |
| import math
| |
| | |
| def Euclides(a,b):
| |
| if b == 0:
| |
| return a
| |
| else:
| |
| r = a%b
| |
| return Euclides(b,r)
| |
|
| |
| a = sys.argv[1]
| |
| b = sys.argv[2]
| |
| a = float(a)
| |
| b = float(b)
| |
| | |
| print Euclides(a,b)
| |
| </pre>
| |
| <br>b) | | <br>b) |
| <br>c) | | <br>c) |
Línea 255: |
Línea 146: |
|
| |
|
| <br>b) | | <br>b) |
|
| |
|
| |
| [[Category: Prácticas]]
| |