Tantangan
Dengan bilangan bulat positif N
, hasilkan jumlah dari N
resiprokal pertama sebagai fraksi yang tepat, yang direpresentasikan sebagai sepasang bilangan bulat dalam urutan yang konsisten yang menunjukkan pembilang dan penyebut.
Aturan
Keluaran harus tepat.
Output harus berupa sepasang bilangan bulat dalam urutan yang konsisten yang mewakili pembilang dan penyebut.
Dilarang menggunakan tipe angka non-integer (built-in atau perpustakaan).
- Klarifikasi / pengecualian: tipe numerik non-integer baik-baik saja jika dan hanya jika semua nilai yang digunakan, dihitung, dan dikembalikan adalah bilangan bulat (yaitu bahasa Anda menggunakan bilangan rasional secara default, tetapi Anda hanya menggunakan aritmatika bilangan bulat dalam jawaban Anda)
Keluaran harus dikurangi sebanyak mungkin. (
3/2
tidak apa-apa,6/4
tidak)Celah standar dilarang.
Kiriman harus bekerja untuk input setidaknya hingga 20, atau meta ini , mana yang lebih tinggi.
Uji Kasus
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
Generasi Uji-Kasus (Python 3)
import fractions
def f(x):
return sum(fractions.Fraction(1,i) for i in range(1,x+1))
Mirip dengan tantangan ini dan tantangan ini .
Numerator adalah OEIS A001008 , dan penyebutnya OEIS A002805 .
gcd
"fungsi bawaan" jika bahasa Anda menyediakannya?
gcd
dan fungsi bawaan lainnya baik-baik saja. Jenis rasional / fraksional tidak diperbolehkan.