Guide: 생각하라! 그러면 부자가 되리라. - enrich
http://nbbs.naver.com/action/list.php?id=tamusic_0&work=list&st=&sw=&cp=1
// cpu의 무리한 연산을 방지하기 위해 법-지수 연산 알고리즘 사용// 법-지수 연산 알고리즘을 사용하여 z값 구하기long CRSADlg::fastMod(int m, int e, int n){
long z = 1 ; while (e != 0) //지수의 비트수와 일치할때까지 반복한다. { while (e % 2 == 0) // 지수의 마지막 비트가 0일때까지 반복 { e = e / 2 ; // 지수의 마지막 비트수를 한 자리 줄인다. m = (m * m) % n; // 평문 값 계산 } e--; // 지수의 특정 비트가 0이 되도록 바꾼다. z = (z * m) % n ; // 지수가 0일때 계산 } return z;}
int CRSADlg::GetPrimaryKey(int first, int second){ int b,x,s,q,e,w,a; b = second; a = first; x = 0; s = 1;
while(a != 1) { q = b / a; e = b - a*q; w = x - s*q; b = a; a = e; x = s; s = w; } if(s < 0) s = s + second; return s;
}
if(m_t > 0) { m_r = m_s % m_t; m_s = m_t; m_t = m_r; }