참고 :이 과제는 sandbox 에 게시되었습니다 .
소개
이 도전은 학부 수학 경쟁의 문제인 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)
채점
이것은 code-golf 이므로 바이트 단위의 최저 점수가 이깁니다!
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!)
입니다.