Примечание: этот вызов был размещен в песочнице .
Вступление
Эта задача вдохновлена 2009 Putnam B1 , проблемой в конкурсе математики для студентов. Проблема заключается в следующем:
Покажите, что каждое положительное рациональное число может быть записано как частное от произведений факториалов (не обязательно различных) простых чисел. Например,
Вызов
Ваша задача состоит в том, чтобы взять в качестве входных данных пару относительно простых натуральных чисел, представляющих числитель и знаменатель положительного рационального числа (или только самого рационального числа), и вывести два списка (или массива и т. Д.) Простых чисел так, чтобы введенное рациональное число равно отношению произведения факториалов простых чисел в первом списке к произведению факториалов простых чисел во втором списке.
Примечания
- Там не может быть никаких простых чисел, которые содержатся как в первом списке, так и во втором списке; однако, простое число может появляться столько раз, сколько нужно в любом списке.
- Можно предположить, что каждый из входов (не строго) находится между 1 и 65535; однако нельзя предположить, что факториалы чисел, которые вам нужно вывести, будут в этом диапазоне.
Пример ввода и вывода
Вот примеры юридических входов и выходов.
input=>output
10,9 => [2,5],[3,3,3]
2,1 => [2],[]
3,1 => [3],[2]
1,5 => [2,3,2],[5] (elements of a list may be in any order)
3,2 => [3],[2,2]
6,1 => [3],[]
Входы (2,2), (0,3), (3,0), (3,6) и (1,65536) являются недопустимыми (т. Е. Ваша программа не должна вести себя по-своему) ). Вот несколько примеров незаконных выводов:
1,2 => [2],[2,2] (2 is in both returned lists)
5,2 => [5],[2,4] (4 is not prime)
2,1 => [2],[1] (1 is not prime either)
3,2 => [3],[2] (3!/2! = 3, not 3/2)
счет
Это код-гольф , поэтому выигрывает самая низкая оценка в байтах!
10/9
а не пары чисел 10
и 9
?
10/9
=[2*5]/[3*3]
=[(2!/1!) * (5!/4!)] / [(3!/2!) * (3!/2!)]
=[2! * 5! * 2! * 2!] / [3! * 3! * 1! * 4!]
=(2! * 2! * 2! *5!) / (3! * 3! * 4!)
.