Sfida
Dato un numero intero positivo N
, genera la somma dei primi N
reciproci come una frazione esatta, che è rappresentata come una coppia di numeri interi in un ordine coerente che rappresenta numeratore e denominatore.
Regole
L'output deve essere esatto.
L'output dovrebbe essere una coppia di numeri interi in un ordine coerente che rappresenta numeratore e denominatore.
L'uso di tipi numerici non interi (built-in o libreria) è vietato.
- Chiarimento / eccezione: i tipi numerici non interi vanno bene se e solo se tutti i valori utilizzati, calcolati e restituiti sono numeri interi (ovvero la tua lingua utilizza numeri razionali per impostazione predefinita, ma nella tua risposta usi solo l'aritmetica dei numeri interi)
L'output dovrebbe essere il più ridotto possibile. (
3/2
va bene,6/4
no)Scappatoie standardSono vietate le .
Gli invii dovrebbero funzionare per input almeno fino a 20, o questa meta , a seconda di quale sia maggiore.
Casi test
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
Generazione di test-case (Python 3)
import fractions
def f(x):
return sum(fractions.Fraction(1,i) for i in range(1,x+1))
Simile a questa sfida e questa sfida .
I numeratori sono OEIS A001008 e i denominatori sono OEIS A002805 .
gcd
una "funzione integrata" se la tua lingua lo fornisce?
gcd
e altre funzioni integrate vanno bene. I tipi razionali / frazionari non sono ammessi.