2012-01-07 7 views
0

^k mod m을 풀기 위해 연속 제곱을 사용하는 알고리즘을 작성했습니다. 연속 제곱이 작동하는 방식 때문에 알고리즘에서 계산해야하는 최대 값은 2147483646^2 (사용자 입력을 214738364로 제한)입니다. 불행히도, 여전히 이것을 계산해야합니다. 제곱 부분을 올바르게 얻은 다음 넘칠 수를 float로 바꾸지 만 float 및 정수의 모듈을 계산할 수는 없습니다.PHP 오버 플로우 모듈

샘플 라인은 다음과 같습니다

3422422^2 mod 715924 = 661224^2 mod 715924 = 437217178176 mod 715924 = -354280 

어떻게이 문제를 해결할 수있는 방법 중 하나는 PHP에서 정수 오버 플로우 주위에 자신의 방법을 찾을 수 있습니까?

+0

어떻게 해결할 수 있습니까? 해당 부동 소수점/적분 모드를 사용할 수 없습니까? –

+0

물론, 모듈러스가 음수를 반환하지는 않지만 여기에서 발생하는 것입니다. float와 정수의 모듈에 대한 특별한 PHP 함수가 있습니까? –

+0

[음수를 반환하는 모듈러스에는 어떤 문제가 있습니까?] (http://codepad.org/TwoMrkOR) 부동 소수점에는 아무런 관련이 없다고 생각합니다. 그것은 단지 넘치는 정수입니다. –

답변