Desafío
Dado un entero positivo N
, genera la suma de los primeros N
recí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/2
está bien,6/4
no 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 .
gcd
una "función incorporada" si su idioma lo proporciona?
gcd
y otras funciones integradas están bien. Los tipos racionales / fraccionarios no están permitidos.