Iteraciones while P30196


Statement
 

pdf   zip

html

Se piden los códigos de varias funciones. Atención, no uséis el módulo math.

  1. Programad una función entera int_root(n) que dado un número natural n retorne ⌊√n⌋.
  2. Programad una función int_log(a, b) que dados los números naturales a mayor que uno y b mayor que cero retorne el natural k tal que akb < ak + 1.
  3. Programad una función gcd_lcm(a, b) que dados los números naturales a and b tales que a≠ 0 o b≠0 retorna el máximo común divisor y el mínimo común múltiplo. Vuestro código ha de implementar el algoritmo de Euclides.
  4. Programad una función is_prime(n) que dado un número natural n retorna True si y sólo si n es primo.
  5. Para poder participar en los juegos de mesa del casino se necesita adquirir fichas (tokens). Lo tokens rojos cuestan 7 euros y los amarillos 4 euros. Programad una función buy_tokens(n) que dado un número n de euros (n ≥ 20), retorna la equivalencia en tokens. Cuando varias equivalencias son posibles la función retorna la que minimiza el número total de tokens.
  6. Programad una función string max_overlap(s, t) que dados dos strings s y t retorna el string más largo que es un prefijo común de s y t.

Puntuación

La primera función vale 15 puntos. El resto vale 17 puntos cada una.

Sample session
>>> int_root(19)
4
>>> int_log(3, 20)
2
>>> gcd_lcm(12,18)
(6, 36)
>>> is_prime(51)
False
>>> buy_tokens(50)
(6, 2)
>>> max_overlap('bugs', 'bunny')
bu
Information
Author
Jorge Castro
Language
Spanish
Translator
Original language
Catalan
Other languages
Catalan English
Official solutions
Python
User solutions
Python