POW가 (a, b) % B는
를 == 여부를 확인하고 싶은 (오버플로 없음)
은 2 ≤ b ≤ 32768 (2)이고 2 ≤ a ≤ b이고 a와 b는 정수임.
그러나 b가 큰 숫자 인 pow(a, b) % b
을 직접 계산하면 C가 빠르게 오버플로됩니다. 이 조건이 성립 하는지를 확인하는 트릭/효율적인 방법은 무엇입니까?
이 질문은 Fermat의 작은 정리에 대한 증인을 찾는 것을 기반으로합니다.이 정리는 Fermat의 작은 정리가 거짓이면 b가 소수가 아님을 나타냅니다.
또한 걸리는 시간이 제한되어 있으므로 너무 느려서는 안됩니다 (2 초 또는 그 이상). 가장 큰 Carmichael 번호 인 소수 b
은 소수가 아니지만 을 2 <= a <= b
(b < = 32768)으로 만족하지 않습니다. 따라서 pow(a, b) % b == a
을 2 <= a <= 29341
으로 확인하는 방법이 너무 느려서는 안됩니다.
의'^ 당신은'A' 전원'b' 또는 A''의'비트 XOR'와'b'에 제기 의미 b'? –
@AjayBrahmakshatriya 나는 그가 힘을 의미한다고 생각한다. 그렇지 않으면 오버플로를 얻는 것이 훨씬 어렵 기 때문이다. 그러나 C에서'^'는 보통 XOR이므로 확실하게 말하기는 어렵습니다. – izlin
@izlin 나는 그가 힘을 의미한다고 생각했지만 나는 분명히 해달라고 부탁했다. –