Desafío
Dado un entero positivo N, genera la suma de los primeros Nrecíprocos como una fracción exacta, que se representa como un par de enteros en un orden consistente que representa numerador y denominador.
Reglas
La salida debe ser exacta.
La salida debe ser como un par de enteros en un orden consistente que represente numerador y denominador.
Se prohíbe el uso de tipos numéricos no enteros (integrados o de biblioteca).
- Aclaración / excepción: los tipos numéricos no enteros están bien si y solo si todos los valores utilizados, calculados y devueltos son enteros (es decir, su idioma usa números racionales por defecto, pero solo usa aritmética de enteros en su respuesta)
La producción debe ser lo más reducida posible. (
3/2está bien,6/4no está)Las lagunas estándar están prohibidas.
Los envíos deben funcionar para entradas de al menos hasta 20, o este meta , lo que sea mayor.
Casos de prueba
1: 1/1
2: 3/2 (1/1 + 1/2)
3: 11/6 (1/1 + 1/2 + 1/3)
4: 25/12 etc.
5: 137/60
6: 49/20
20: 55835135/15519504
56: 252476961434436524654789/54749786241679275146400
226: 31741146384418617995319820836410246588253008380307063166243468230254437801429301078323028997161/5290225078451893176693594241665890914638817631063334447389979640757204083936351078274058192000
Generación de casos de prueba (Python 3)
import fractions
def f(x):
return sum(fractions.Fraction(1,i) for i in range(1,x+1))
Similar a este desafío y este desafío .
Los numeradores son OEIS A001008 , y los denominadores son OEIS A002805 .
gcduna "función incorporada" si su idioma lo proporciona?
gcdy otras funciones integradas están bien. Los tipos racionales / fraccionarios no están permitidos.