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
수정 아이콘
빠른답변 감사합니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
111313 [질문] 전열기구 추천좀 해주세요 [2] 톰슨가젤연탄구이1533 17/11/03 1533
111312 [질문] 마카오 여행 관련 날씨, 맛집 추천 부탁드립니다. [3] 스윗앤솔티1688 17/11/03 1688
111310 [질문] 주말 인천공항 국제선 주차장 [4] 면역2041 17/11/03 2041
111309 [질문] 폰케이스 기스를 없애고 싶습니다. [4] Liberation3364 17/11/03 3364
111308 [질문] 플스4 구매했습니다. 타이틀 순서 질문입니다. [19] 나이스4152 17/11/03 4152
111307 [질문] (트와이스) 팬 싸인회는 어떤가요? [2] ComeAgain1275 17/11/03 1275
111306 [질문] 미러리스 카메라 첫구매 질문드립니다. [11] 워라밸3858 17/11/03 3858
111305 [질문] 핸드폰 구입 싸게사는법 있나요? [4] LubyH2075 17/11/03 2075
111304 [질문] 연말 혹은 클스마스 단체파티 미리 예약 하면 좋은 곳 추천 부탁드립니다 [4] Mindow1984 17/11/03 1984
111303 [질문] 주식 거래했는데 입금이 적게된 것 같습니다. [17] 코인괜히시작3764 17/11/03 3764
111302 [질문] 예전 pci슬롯이 달린 메인보드가 요즘에도 나오나요? [3] 정공법4434 17/11/03 4434
111301 [질문] 다음주에 1박2일 놀러갈만한곳 있을까요? [2] DAUM2234 17/11/03 2234
111300 [질문] 침구류(이불)용 청소기 사용하시는 분들 어떤가요? [2] CoMbI COLa1915 17/11/03 1915
111299 [질문] 삼성 노트북 17년 모델 지금 사면 별로일까요? [6] 강아지아빠3029 17/11/03 3029
111298 [질문] 혹시 영문법 고수님들 계신가요? [11] 개망이2978 17/11/03 2978
111297 [질문] 서울역으로 출근시 어디에 원룸을 잡을까요?? [23] 아줌마너무좋아8390 17/11/02 8390
111296 [질문] 대전 정부청사역, 시청역 소개팅 장소 질문입니다. [2] 토폴로지3419 17/11/02 3419
111295 [질문] 블박 DIY 개인이 할만 할까요? [6] Heaven2404 17/11/02 2404
111294 [질문] 유치원 선택 고민.. 의견 부탁 드려요. [31] 메모네이드3411 17/11/02 3411
111293 [질문] 여자친구와 갈만한 만화방 추천 바랍니다. [8] chamchI3628 17/11/02 3628
111292 [질문] 오늘 영화 직쏘 보신분들 어떠셨나요? [3] 광개토태왕2362 17/11/02 2362
111291 [질문] a^p mod n을 구하는 빠른방법있을까요? [5] Patrick Jane2306 17/11/02 2306
111290 [질문] 대학로근처에 vr카페있나요? 최적값2341 17/11/02 2341
목록 이전 다음
댓글

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