Примітка. Цей виклик розміщено на пісочниці .
Вступ
Цей виклик надихнув 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!)
.