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
수정 아이콘
빠른답변 감사합니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
134239 [질문] 첫 차 구매경로 [8] patrick Jane2979 19/06/08 2979
131800 [질문] 업무용 마우스 추천해주세요! [7] patrick Jane3197 19/03/29 3197
131203 [질문] 유산균 추천 부탁드립니다! [10] patrick Jane3699 19/03/11 3699
130872 [질문] [lol] 케릭터 빨리얻는 방법이있나요? [10] patrick Jane14976 19/03/02 14976
129770 [질문] 20대 카드추천 부탁드립니다! [6] patrick Jane2566 19/01/29 2566
128569 [질문] 스카이캐슬(드라마) 질문입니다.(혹시모를 스포조심) [10] patrick Jane5337 18/12/26 5337
124647 [질문] 파이썬 문자변환 질문입니다. [3] patrick Jane1572 18/09/12 1572
124480 [질문] 그림그리기 적당한 장비 추천드립니다 [3] patrick Jane2422 18/09/06 2422
121896 [질문] 비오는날 야외주차 [10] patrick Jane5366 18/07/02 5366
119981 [질문] 오야가자는 무슨말인가요? [15] patrick Jane10125 18/05/15 10125
118783 [질문] 파이썬 리스트 질문입니다. [8] patrick Jane1727 18/04/17 1727
118566 [질문] c#책 추천해주세요! [4] patrick Jane4728 18/04/12 4728
115566 [질문] 결혼하려면 보통 얼마나 드나요? [25] patrick Jane6436 18/02/01 6436
113897 [질문] 프로그래밍 실력을 늘리는 법은 뭘까요? [36] patrick Jane12245 17/12/28 12245
112891 [질문] 컴퓨터 고장 질문드립니다! [4] patrick Jane1596 17/12/06 1596
111291 [질문] a^p mod n을 구하는 빠른방법있을까요? [5] patrick Jane2003 17/11/02 2003
110190 [질문] 배치프로그래밍 질문입니다. [5] patrick Jane1602 17/10/11 1602
110123 [질문] 톰켓 설정질문입니다 patrick Jane1042 17/10/10 1042
105927 [질문] Netflix 볼만한거 추천 부탁드려요 [20] patrick Jane4093 17/07/18 4093
104946 [질문] 대학원진학 질문입니다! [21] patrick Jane8700 17/06/29 8700
103768 [질문] 자바빈 질문입니다! (javabean) [4] patrick Jane1980 17/06/06 1980
103308 [질문] jquery 이용한 달력질문입니다! [7] patrick Jane4083 17/05/28 4083
103251 [질문] 남자선크림 추천 부탁드립니다. [8] patrick Jane3728 17/05/27 3728
목록 이전 다음
댓글

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