Учитывая положительное целое число n, выведите целые числа a и b (образуя сокращенную дробь a / b ), так что:
Где p k - это k- е простое число (с p 1 = 2).
Примеры:
1 -> 3, 5
2 -> 12, 25
3 -> 144, 325
4 -> 3456, 8125
5 -> 41472, 99125
15 -> 4506715396450638759507001344, 11179755611058498955501765625
420 -> very long
Допустимы вероятностные простые проверки, и это нормально, если ваш ответ не удался из-за ограничений в целочисленном типе вашего языка.
Самый короткий код в байтах побеждает.
code-golf
arithmetic
orlp
источник
источник
3.0
вместо3
?a
иb
как рациональный тип?Ответы:
М , 9 байт
Попробуйте онлайн!
пустяки
Знакомьтесь, М!
М - это вилка Желе, нацеленная на математические задачи. Основное различие между Jelly и M состоит в том, что M использует бесконечную точность для всех внутренних вычислений, символически представляя результаты. Как только M станет более зрелым, Jelly постепенно станет более универсальным и менее ориентированным на математику.
M очень много работы в прогрессе (полной ошибок, а не на самом деле , что отличается от молочка прямо сейчас), но он работает как шарм для этой проблемы , и я просто не мог устоять.
Как это устроено
источник
ÆN
единственный M-конкретный оператор? Также МеллиMathematica, 32 байта
Неименованная функция, которая принимает целочисленный ввод и возвращает фактическую дробь.
Это использует тот факт, что . Код затем обрабатывается благодаря тому, что Mathematica продвигает всю основную арифметику над списками. Итак, мы сначала создаем список , затем извлекаем все эти простые числа и вставляем этот список в вышеприведенное выражение. Это дает нам список всех факторов. Наконец, мы умножаем все вместе, применяя к списку, к которому можно прибегнуть .
(p2-1)/(p2+1) = 1-2/(p2+1)
{1, 2, ..., n}
Times
1##&
В качестве альтернативы мы можем использовать
Array
для того же количества байтов:источник
1-2
=1
, верно?-1
самом деле), но1-2/x ≠ -1/x
. ;)@Range@
±~Array~
Python 2, 106 байт
Первая и четвертая строки очень больно ... оказалось, что использование
Fraction
было лучше, чем умножение по отдельности и использованиеgcd
, даже в Python 3.5+, гдеgcd
находитсяmath
.Премьер - поколение адаптировано из ответа @ XNOR в здесь , который использует теорему Вильсона.
источник
Рубин,
1227765 байтСпасибо Шерлоку за то, что он сбрил 10 байтов.
Определяет анонимную функцию, которая принимает число и возвращает a
Rational
.источник
PARI / GP , 33 байта
Альтернативная версия (46 байт):
Неконкурентная версия, дающая результат с плавающей точкой (
t_REAL
) (38 байт):источник
Желе ,
1413 байтовПопробуйте онлайн! Спасибо @Dennis за -1 байт.
источник
Pyth,
2625Попробуйте здесь или запустите Test Suite .
1 байт сохранен благодаря Якубе!
Довольно наивная реализация спецификаций. Использует элегантное «новое» (я понятия не имею, когда это было добавлено, но я никогда не видел его раньше),
P<neg>
которое возвращает, является ли положительное значение отрицательного числа простым или нет. Некоторые из карт и т. Д., Вероятно, можно сыграть в гольф ...источник
Юлия,
5942 байтаЭто анонимная функция , которая принимает целое число и возвращает
Rational
сBigInt
числителем и знаменателем.Мы начинаем с генерации списка простых чисел, меньших 2 n 2, и выбора первых n элементов. Это работает, потому что n- е простое число всегда меньше, чем n 2 для всех n > 1. ( см. Здесь .)
Для каждого p из n выбранных простых чисел мы возводим в квадрат p, используя поэлементную степень (
.^2
), и строим рациональное 2 / ( p + 1), где 2 сначала преобразуется в a,BigInt
чтобы обеспечить достаточную точность. Мы вычитаем это из 1, берем произведение полученного массива рациональных чисел и возвращаем полученное рациональное.Пример использования:
Сохранено 17 благодаря Sp3000!
источник
Выпуклый, 28 байт
Convex - это новый язык, который я разрабатываю и который основан на CJam и Golfscript. Интерпретатор и IDE можно найти здесь . Ввод - это целое число в аргументах командной строки. Индексы основаны на одном. Использует кодировку CP-1252.
Вы можете или не можете считать этот ответ конкурирующим, поскольку я работал над несколькими функциями, которые использует эта программа, до того, как задание было опубликовано, но обязательство было принято, как только я увидел, что это задание прошло.
источник
MATL , 18 байт
Попробуйте онлайн!
Сбой для больших входных данных, потому что только целые числа до
2^52
могут быть точно представлены внутри.объяснение
источник
Mathematica, 45 байт
Штрихи? Фракции? Mathematica.
источник
Haskell, 53 байта
Анонимная функция, 53 символа:
Попробуйте это здесь (примечание: в стандартном GHCi сначала нужно убедиться
Data.Ratio
иData.List
импортироваться):Индекс списка Хаскелла
!!
основан на 0.(___!!)
является операторским разделом , формирующим анонимную функцию, так что(xs !!) n == xs !! n
.Это меньше на четыре байта для генерации всей последовательности:
источник
Серьезно, 25 байт
Выходы
a\nb
(\n
это новая строка). Большие входные данные займут много времени (и могут потерпеть неудачу из-за нехватки памяти), потому что простое генерирование довольно медленное.Попробуйте онлайн!
Объяснение:
источник