주어진 semiprime N은 , 작은 양의 정수 찾을 m을 두 요인의 하나의 이진 표현되도록 N은 이진 표현에서 찾을 수 N * m .
예
semiprime N = 9799를 고려해 봅시다 .
1부터 시작하여 다른 m 값을 시도합니다 .
m | N * m | N * m in binary
---+--------+------------------
1 | 9799 | 10011001000111
2 | 19598 | 100110010001110
3 | 29397 | 111001011010101
4 | 39196 | 1001100100011100
5 | 48995 | 1011111101100011
6 | 58794 | 1110010110101010
7 | 68593 | 10000101111110001
8 | 78392 | 10011001000111000
9 | 88191 | 10101100001111111
10 | 97990 | 10111111011000110
11 | 107789 | 11010010100001101
마지막 제품 101001
의 이진 표현에는 41 의 이진 표현 인 9799 의 두 가지 요소 중 하나 (다른 하나는 239 ) 가 포함되어 있기 때문에 여기서 멈 춥니 다 .
답은 11 입니다.
규칙 및 메모
- m의 값을 시도하는 것은 의미가 없습니다. 그것들은 완전성을 위해 위의 예에서 보여졌습니다.
- 프로그램은 N * m 이 사용자 언어의 컴퓨팅 기능 내에 있는 N 을 지원해야합니다 .
- 당신은 인수 분해 할 수 있습니다 N을 의 이진 표현의 각각의 가능한 문자열 것보다 사전에 오히려 N * m을 그것의 인자로 밝혀 있는지 확인하기 위해 N .
- MitchellSpector 에 의해 입증 된 바와 같이 , m은 항상 존재합니다.
- 이것은 코드 골프이므로 바이트 단위의 최단 답변이 이깁니다. 표준 허점은 금지되어 있습니다.
테스트 사례
첫 번째 열은 입력입니다. 두 번째 열은 예상 출력입니다.
N | m | N * m | N * m in binary | Factor
-----------+------+---------------+----------------------------------------------+-------
9 | 3 | 27 | [11]011 | 3
15 | 1 | 15 | [11]11 | 3
49 | 5 | 245 | [111]10101 | 7
91 | 1 | 91 | 10[1101]1 | 13
961 | 17 | 16337 | [11111]111010001 | 31
1829 | 5 | 9145 | 1000[111011]1001 | 59
9799 | 11 | 107789 | 1[101001]0100001101 | 41
19951 | 41 | 817991 | 1[1000111]101101000111 | 71
120797 | 27 | 3261519 | 11000[1110001]0001001111 | 113
1720861 | 121 | 208224181 | 11000110100[100111111101]10101 | 2557
444309323 | 743 | 330121826989 | 100110011011100110010[1101010010101011]01 | 54443
840000701 | 4515 | 3792603165015 | 11011100110000[1000110000111011]000101010111 | 35899
1468255967 | 55 | 80754078185 | 1001011001101010100010[1110001111]01001 | 911