우수 답변
2 ^ 30 * 3 ^ 20
= (2 ^ 3) ^ 10 * (3 ^ 2) ^ 10
= 8 ^ 10 * 9 ^ 10
= (8 * 9) ^ 10
= 72 ^ 10
72 mod 7 = 2부터
72 ^ 10 mod 7
= (2 ^ 10) mod 7
= 1024 mod 7
= 2
Answer
컴퓨터를 켜서 물어볼 수 있습니다. 1091132094649를 받았지만, 최소한의 연필과 종이 작업으로 어떻게이 작업을 수행 할 수 있는지 또는 CPU 사이클을 과도하게 사용하지 않고 컴퓨터에서 훨씬 더 큰 문제를 어떻게 처리 할 수 있는지를 의미합니다.
아마도 이를 위해 중국 나머지 정리를 원합니다. 20 = 2 ^ 2 * 5, 그래서 20 ^ 10 = 2 ^ 20 * 5 ^ 10.
그러면 3 ^ 30 mod 5 ^ 10은 무엇일까요? 기본 5 산술로 작업하십시오. 3 ^ 3 = 102, 3 ^ 6 = 102 * 102 = 10404, 3 ^ 12 = 114001231, 이제 3 ^ 3 = 102를 곱하지만 5의 10 제곱을 초과하는 모든 자릿수를 버리면 12133131112가 2133131112로 트리밍됩니다. 마지막으로 제곱 5의 10 제곱 이상의 모든 것을 버립니다 : 4304012044. 기본 10, 익숙한 잔디로 돌아가려면 9047774입니다.
이제 3 ^ 30 mod 2 ^ 20이 필요합니다. 같은 드릴이지만 이번에는 바이너리로 작업합니다. 결국 686265 mod 2 ^ 20이라는 것을 알게됩니다.
이제 중국 나머지 정리를위한 시간입니다. 이것은 두 개의 상대적으로 소수의 계수 (여기서는 2 ^ 20과 5 ^ 10)와 각각 합동 조건 mod가 주어 졌을 때, 여기서 대답은 9047774 mod가 첫 번째이고 686265 mod이며, 0과 다음의 곱 사이에 고유 한 n이 있습니다. 당신의 계수는 1보다 적습니다. 그리고 당신은 만약 n = a mod p와 b mod q라면, n = a + pk 그래서 (a + pk) = b mod q라는 생각을 통해 그것을 찾을 수 있습니다. 그래서 pk = (b-a) mod q, 그래서 k = (p의 역) * (b-a) mod q. 그리고 p mod q의 역은 확장 된 유클리드 알고리즘으로 구할 수 있습니다. (당신은 p와 q의 gcd를 추출하여 결국 1이 될 것이라는 것을 잘 알고 있지만 s *를 얻을 때까지 s * p + t * q = 작고 작아짐에 대해 배운 것을 추적합니다. p + t * q = 1이고 s는 p mod q의 역입니다.)