Виклик
Давши додатне ціле число N
, виведіть суму перших N
реципрок у вигляді точного дробу, який представлений у вигляді пари цілих чисел у послідовному порядку, що представляє чисельник та знаменник.
Правила
Вихід повинен бути точним.
Вихід має бути як пара цілих чисел у послідовному порядку, що представляє чисельник та знаменник.
Використання не цілих числових типів (вбудована або бібліотека) заборонено.
- Уточнення / виняток: нецілі числові типи в порядку, якщо і лише якщо всі використовувані, обчислені та повернуті значення є цілими числами (тобто ваша мова використовує раціональні числа за замовчуванням, але ви використовуєте лише цілу арифметику у своїй відповіді)
Вихід повинен бути максимально скороченим. (
3/2
добре,6/4
ні)Стандартні лазівки заборонені.
Подані матеріали повинні працювати для вхідних даних щонайменше до 20, або це мета , залежно від того, що вище.
Випробування
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
Генерація тестових випадків (Python 3)
import fractions
def f(x):
return sum(fractions.Fraction(1,i) for i in range(1,x+1))
Подібно до цього виклику і до цього виклику .
Числівники - OEIS A001008 , а знаменники - OEIS A002805 .
gcd
є "вбудованою функцією", якщо ваша мова надає її?
gcd
та інші вбудовані функції чудово. Раціональні / дробові типи не допускаються.