이 작업은 복합 숫자의 사소한 요소를 찾는 것입니다.
코드 길이가 140 바이트를 넘지 않으면 서 가능한 빨리 복합 수의 중요하지 않은 요소를 찾는 코드를 작성하십시오. 결과는 찾은 요소 일뿐입니다.
코드는 예를 들어 함수에 대한 인수를 포함하여 편리한 방법으로 입력을 가져오고 출력 할 수 있습니다.
모든 요소를 나열하는 테스트 사례 (하나만 출력하면 됨)
187: 11 17
1679: 23 73
14369648346682547857: 1500450271 9576890767
34747575467581863011: 3628273133 9576890767
52634041113150420921061348357: 2860486313 5463458053 3367900313
82312263010898855308580978867: 264575131106459 311111111111113
205255454905325730631914319249: 2860486313 71755440315342536873
1233457775854251160763811229216063007: 1110111110111 1000000000063 1111111999999
1751952685614616185916001760791655006749: 36413321723440003717 48112959837082048697
테스트에 관심이있을 수있는 다음과 같은 어려운 테스트 사례에서 귀하의 답변에 점수를 매기 지 않습니다.
513231721363284898797712130584280850383: 40206835204840513073 12764787846358441471
점수
점수는 각 실패한 인수 분해에 대해 10 분의 페널티 (모든 것이 가장 가까운 초로 반올림 됨)로 위의 모든 테스트 케이스를 인수 분해하는 결합 된 시간입니다. 코드는 다른 정수에서도 작동해야합니다.이 답변을 하드 코딩해서는 안됩니다.
10 분 후에 코드를 중지하겠습니다.
두 사람이 같은 점수를 얻으면 첫 번째 답변이 이깁니다.
제한 사항
코드는 정수 인수 분해를 수행하는 내장 함수 또는 라이브러리 함수를 사용할 수 없습니다. 입력이 256 비트보다 적은 것으로 가정 할 수 있습니다. 모든 입력 번호는 합성됩니다.
나는 어떻게 시간을 할 것인가?
말 그대로 time ./myprog
우분투 시스템에서 타이밍을 실행하기 위해 실행하므로 정의 한 기능이 포함 된 완전한 프로그램을 실행하십시오.
컴파일 된 언어에 대한 참고 사항
컴퓨터에서 컴파일 시간이 1 분을 넘지 않아야합니다.
실제로 가능합니까?
공간 제약 조건을 무시하면 순수 Python 코드 + pypy를 사용하여 컴퓨터에서 각 제약 조건을 2 초 이내에 인수 할 수 있습니다.
그렇다면 사소한 인수 분해 알고리즘은 무엇입니까?
Pollard의 rho 알고리즘 은 빠르고 골프에 적합합니다. 물론 정수 를 인수 분해하는 다른 방법도 많이 있습니다.
이차 체 는 더 빠릅니다 . 140 바이트로 압축하는 것은 심각한 도전처럼 보입니다.
최고의 점수
- SEJPM , 마지막 테스트 케이스에 대해 10 분의 페널티 + Haskell 에서 16 초
2
또는 2, 2
?
2 ** 1024
?