PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2017/11/02 21:58:18
Name Patrick Jane
Subject [질문] a^p mod n을 구하는 빠른방법있을까요?
n은 31비트 수로 가정하고 a는 {2,3,4,.....,n-2} 이고 p는 n-1=2^r*p (p는 홀수) 입니다.

밀러라빈에서 z를 구하는과정에서 a^p mod n을 구해야하는데 수가 작으면 pow(a,p)%n을 통해서 구하는게 가능한데, n값이 앞에서 주어진데로 31비트정도되는
소수를 넣고 판별하려니 숫자가 너무 커서 제대로 구하지를 못하네요.

우선 구글링으로 검색한결과
int fastExpLimited(int base, int exp, int limit) {
        int result = base;
        while (exp > 1) {
                result *= result;
                if (exp % 2) {        
                        result *= base;
                }
                exp /= 2;
                result %= limit;
        }
        return result;
}
이런식으로 구한다는데, 실제 적용해보니 정상적으로 구하지를 못하네요. (6,5,21)을 넣으면 15를 리턴시켜주네요...6을 리턴시켜줘야하는데..
혹시 다른 방법이나 기발한 생각이있으신분 말씀해주시면 감사하겠습니다!


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
17/11/02 22:15
수정 아이콘
long long fexp(long long base, long long exp, long long mod) {
if (exp == 1) return base;
long long res = fexp(base, exp/2, mod);
res = res * res % mod;
if (exp % 2) res = res * base % mod;
return res;
}
이걸로 돌려보세요. 시간복잡도 O(log p) 니까 순식간에 나올겁니다.
회색사과
17/11/02 22:21
수정 아이콘
크으 그냥 롱롱 쓰면 될걸.. 그랬네요
Patrick Jane
17/11/02 22:24
수정 아이콘
허헣... 빠른답변 감사합니다!!
회색사과
17/11/02 22:21
수정 아이콘
그냥 드는 생각으로는... 로그 함수를 쓰건 pow를 쓰건...
a^q > n 이 되는 최소한의 q를 찾고, (a^q)/n 을 구한 다음에 [이걸 w라고 치고]
w^(p/q)*a^(p%q) % n 하면 어떨까요?
Patrick Jane
17/11/02 22:24
수정 아이콘
빠른답변 감사합니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
111370 [질문] 중국 아편전쟁에 대해서 [12] 장미베개2631 17/11/04 2631
111369 [질문] 롤드컵 우승 승자예측 창 어디있죠? [5] 제드1171 17/11/04 1171
111368 [질문] 오토바이에서 굴러서 살이 벗겨졌는데 외과를 가야 하나요? [6] wook982251 17/11/04 2251
111367 [질문] FIFA 18 질문입니다~! [2] 하리네2155 17/11/04 2155
111365 [질문] 안드로이드 테블릿 질문 드립니다.(추천) [14] 40대 유저3073 17/11/04 3073
111364 [질문] 롤드컵 결승 3경기는 어떻게 진건가요? [15] 그래요3008 17/11/04 3008
111363 [질문] [소녀전선] 이번 이벤트 때 콩지랑 이유식을 얻고싶습니다. [11] NㅏRㅏ2566 17/11/04 2566
111362 [질문] 플스4 팔때 질문입니다 [8] 생선가게 고양이3685 17/11/04 3685
111361 [질문] 겨울용 패딩(or 코트) 어떻게 사면 좋을까요? [13] 여의3956 17/11/04 3956
111360 [질문] 전세보증금 관련 질문입니다 [2] 강희최고1791 17/11/04 1791
111359 [질문] [lol] 케넨 누가 잘할까요? 큐베 vs 스맵 [8] arq.Gstar2921 17/11/04 2921
111358 [질문] 윈10 업데이트 이후 게임에서 한글이 안됩니다 [2] 목표는63kg2365 17/11/04 2365
111357 [질문] 롤드컵 치킨 추천 부탁 드립니다. [8] cald1899 17/11/04 1899
111356 [질문] Pgr21 자동로그인이 계속 풀리네요. [13] 곰남이1833 17/11/04 1833
111355 [질문] 윈도우10 화면 밝기 및 글꼴이 이상합니다.도와주세요 [2] 플래쉬3083 17/11/04 3083
111354 [질문] 팟캐스트 추천 부탁드립니다. [4] Clayton1864 17/11/04 1864
111353 [질문] (컴알못) 컴퓨터 부팅실패 관련 질문입니다 [3] 잠보1524 17/11/04 1524
111352 [질문] 라이엇은 다른 게임 개발은 안하나요? [12] 피카츄백만볼트3397 17/11/04 3397
111351 [질문] [스타2 관련]영어이름 질문입니다 [1] RookieKid1720 17/11/04 1720
111350 [질문] 롤드컵 결승 경기언제시작할까요? [9] TheGirl2820 17/11/04 2820
111349 [질문] 삼성페이 쓰는 분들께 질문+서울 고궁 및 후원 질문 [11] ELRIS2299 17/11/04 2299
111348 [질문] 요새 축구 포메이션 대세는 원톱 활용인가요? [6] LG의심장박용택2522 17/11/04 2522
111347 [질문] 자동차 도어가드 접착제 어떻게 제거하죠 [4] 포프의대모험3093 17/11/04 3093
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로