2017-03-16 9 views
0

내가 위키 백과에 Vigenère 암호화/복호화 알고리즘보고 있었다, 내가 올바른/가장 효율적 인 방법 궁금하네요 사이 :Vigenere 암호 해독 및 모듈

return a % b

과 :

if a < 0  
    return a += b 
else 
    return a 

때 는 -b <= a <= b

또는 어쩌면 동등한 한 번 컴파일? :) 가르치 려 어떤 percievable 차이가 전에 만 개 문자로 긴 텍스트를 필요로하는

답변

1

IMO,이 나노 최적화, 작은 관심 때문이다

감사합니다.

모듈로 연산 및 조건부 분기는 다른 연산과 비교할 때 "비용이 많이 들며 프로세서 아키텍처에 상당히 의존합니다. 그래서 알아야 할 유일한 방법은 벤치마킹하는 것입니다. 현실적인 조건에 부합하면서도 재현 가능한 결과를 얻으려면 충분한주의를 기울여야합니다 (약간의 모순이 있음).

이렇게 말하면, %는 음의 인수에 대해 참 모듈러스 연산을 구현하지 않으므로 그렇게 가정하면 잘못된 결과를 얻게됩니다.

+0

좋아, 어쨌든 나는 그것이 내 코드에만 매우 작은 영향을 줄 것이라는 것을 알고 있기 때문에 최적화를 찾고 있지 않았다. 하지만'%'구현에 대해 말한 것은 내가 기대했던 것입니다. 그래서 그것은 분명히 언어에 달려 있습니다. 나는 Haskell에서 해봤고'%'는 예상 된 결과를 생성하는 것으로 보이지만'if 문 '을 유지할 것이다 고맙습니다. –

+1

@MathersMax : 택일 적으로'(a + c) % b'가 작동합니다. 잘 선택된 상수이다. –