Skip to main content

Command Palette

Search for a command to run...

정수론 Chapter 6.2 - Pseudoprimes

Updated
5 min read

이 글의 내용은 성균관대학교 권순학 교수님의 2019년 4월 11, 16일 수업 내용을 재구성한 것입니다.

Pseudoprimes

합성수지만 소수처럼 보이는 수를 의미한다.

Fermat pseudoprimes

Fermat's Little Theorem을 이용하면 어떤 수가 합성수임을 밝힐 수 있다. 그런데 Fermat Little Theorem을 이용해서 테스트한 결과 소수일 때와 비슷한 결과과 나오는 합성수들이 존재한다.

합성수 $ n $에 대해 \( a^{n-1} \\equiv 1 \; (\textrm{mod}\ n)\)인 경우 $n$을 Fermat pseudoprime to base a 라고 한다.

예시: $ 91 $

\( 3^{90} \\equiv 1 \; (\textrm{mod}\ 91) \)이므로 $91$은 Fermat pseudoprime to base 3이지만, \( 2^{90} \\equiv 64 \; (\textrm{mod}\ 91) \)이므로 Fermat pseudoprime to base 2가 아니다.

Lemma 6.1: \(d \\mid n \\Rightarrow 2^d -1 \\mid 2^n - 1 \) {#lemma-6-1}

증명

\(d \\mid n \\Rightarrow \\exists \; t \;\; s.t. \;\; dt = n\)

\( 2^n - 1 = (2^d - 1)(2^{d(t-1)} + 2^{d(t-2)} + \\dots + 2^d + 1) \)

\( \\therefore \; 2^d - 1 \\mid 2^n - 1\)

Theorem 6.6: base 2인 fermat pseudoprime은 무한히 많다

증명

341은 fermat pseudoprime to base 2이다.

$n$이 fermat pseudoprime이면, \(m = 2^n - 1\)도 fermat pseudoprime이다

$$ n: odd \; fermat \; pseudoprime \\\\ \\Rightarrow 2^{n-1} \\equiv 1 \; (\textrm{mod}\ n) $$

$n$이 합성수이므로, \( n = dt (1 \lt d,\; t \lt n) \)

증명: 합성수

Lemma 6.1에 의해 \( 2^d - 1 \\mid 2^n - 1 = m\)이므로 $m$은 합성수이다.

증명: \(2^m \\equiv 1 (\textrm{mod}\ m)\)

$$ 2^n \\equiv 2 \; (\textrm{mod}\ n) \\\\ \\Rightarrow \\exists \; k \;\; s.t. \;\; 2^n - 2 = kn \\\\ \\Rightarrow 2^m - 1 = 2^{2^n - 2} = 2^{kn} $$

Lemma 6.1에 의해 \(m = 2^n - 1 \\mid 2^{kn} - 1 = 2^{m-1} - 1 \)

\( \\therefore \; 2^{m-1} \\equiv 1 \; (\textrm{mod}\ m) \)

Remark: 모든 자연수 $a$에 대해 base $a$인 fermat pseudoprime은 무한히 많다

증명은 생략한다. 증명의 아이디어는 base가 2일 때와 같다.

Concept: square free

어떤 정수 $n$을 소인수분해 했을 때, 모든 prime의 factor가 0 또는 1인 경우 이를 square free라고 부른다. 예를 들어서 $3, 15, 30$은 square-free지만, $4, 8, 16$은 square free가 아니다.

Carmichael Numbers

\(\\gcd(b, n) = 1\)인 모든 자연수 base b에 대해 Fermat primality test를 통과하는 합성수들이 있다. 이런 수들을 Carmichael Numbers라고 부른다.

Remark: 561은 가장 작은 Carmichael Number이다

$$ n = 561 = 3 \\times 11 \\times 17 \\\\ \\gcd(b, 561) = 1 \\Leftrightarrow \\gcd(b, 3) = 1, \;\; \\gcd(b, 11) = 1, \;\; \\gcd(b, 17) = 1 $$

$$ n - 1 = 560 = 2^4 \\times 5 \\times 7 $$

$$ b^{n-1} \\equiv (b^{2})^{280} \\equiv 1 (\\textrm{mod} \; 3) \\\\ b^{n-1} \\equiv (b^{10})^{56} \\equiv 1 (\\textrm{mod} \; 11) \\\\ b^{n-1} \\equiv (b^{16})^{35} \\equiv 1 (\\textrm{mod} \; 17) $$

Carmichael Number은 무한히 많다

증명은 생략한다.

정리의 의미

이 정리는 모든 base에 대해 Fermat's Primarillity Test를 통과하는 합성수가 무수히 많다는 걸 의미하고, 이는 Fermat's Primarillity Test를 소수를 판별하는 데 쓸 수 없다는 것을 뜻한다.

Theorem 6.7: square free인 $n$이 모든 $j$에 대해 \(p_j -1 \\mid n - 1\)을 만족하면 Carmichael Number이다

$n$: square free이고 홀수인 합성수, let $b$: 자연수 \(s.t. \; \\gcd(n, b) = 1\)

$$ n = p_1 \\times p_2 \\times \\cdots \\times p_k $$

$$ \\forall j, \; 1 \le j \le k, \;\; n - 1 = (p_j - 1) t_j \;\; (\\because p_j - 1 \\mid n - 1) $$

$$ b^{n-1} = (b^{p_j - 1})^{t_j} \\equiv 1 \; (\textrm{mod} \; p_j) \;\; (\\because Fermat's \; Little \;Theorem) $$

$$ \\Rightarrow \\forall j, \; p_j \\mid b^{n-1} - 1 $$

$$ \\Rightarrow \\prod_j {p_j} \\mid b^{n-1} - 1 $$

$$ \\Rightarrow n \\mid b^{n-1} - 1 $$

$$ \\Rightarrow b^{n-1} \\equiv 1 \; (\\textrm{mod} \; n) $$

따라서 $n$은 Carmichael Number이다.

Remark: 역도 성립한다

즉, 어떤 수 n이 Carmichael Number라는 것은 n이 square free이고 \(\\forall \; q \\mid n \)에 대해 \( q - 1 \\mid n -1 \)이라는 것과 동치이다.

증명은 생략한다.

Strong Psedoprime

$2$보다 큰 양의 자연수 $n$, 음이 아닌 정수 $s$, 홀수 $t$, \(\\gcd(b, n) = 1\)인 $b$에 대해

$$ n - 1 = 2^s \\times t $$

$$ b^{n-1} - 1 = b^{2^s t} - 1 = (b^{t})^{2^s} - 1 = (b^t - 1)(b^t + 1)(b^{t^2} + 1)\\cdots(b^{t^{s-1}} + 1) $$

이때, \(n \\mid b^{n-1} - 1\)이면, 다시 말해서, 우변에 있는 factor 중 하나라도 나누면 n을 Strong pseudoprime to base b이라 칭한다.

Remark: Strong pseudoprime이면 Fermat's pseudoprime이다

Strong pseudoprime인 $n$과 \(\\gcd(n, b) = 1\)인 $b$에 대해,

$$ b^t \\equiv 1 \; (\\textrm{mod} \; n) \\\\ or \\\\ \\exists \; j \;\; s.t. \;\; b^{2^j}t + 1 \\equiv 0 \; (\\textrm{mod} \; n) $$

$$ \\Rightarrow b^{n-1} \\equiv 1 (\\textrm{mod} \; n) $$

이므로 $n$은 Fermat pseudoprime이다.

Remark: Fermat's pseudoprime이어도 Strong pseudoprime이 아닐 수 있다.

$$ n = 91 = 7 \\times 13, \; b =3 $$

$$ n - 1 = 2^1 \\times 45 $$

$$ b^{n-1} - 1 = (b^t + 1) (b^t - 1) = 28 \\cdot 26 $$

$$ 26 \\not \\equiv 0 \; (\\textrm{mod} \; n), 28 \\not \\equiv 0 \; (\\textrm{mod} \; n) $$

따라서 n은 Strong pseudoprime to base 3이 아니다.

그런데

$$ b^{n - 1} \\equiv 1 \; (\\textrm{mod} \; n) $$

이므로 91은 Fermat pseudoprime to base 3이다.

Theorem 6.9: base $2$인 strong pseudoprime은 무수히 많다

Remark: $b > 1$인 임의의 b에 대해, base b인 Strong pseudoprime은 무수히 많다

증명은 어렵다고 한다.

Theorem 6.10: \(B = \\{1 \le b \le n - 1 | n \; is \; strong \; pseudoprime \; to \; base \; b \\}, |B| \\le \\frac {n - 1} {4}\)

증명은 생략한다.

Theorem 6.11: Miller-Robin Probabilistic Primality Test

홀수 $t$에 대해

$$ n - 1 = 2^s t $$

Step 1: \(1 \le b \le n - 1 \)인 자연수 $b$를 하나 선택한다

Step 2: \(b^{t} \\equiv \\pm 1 \; (\\textrm{mod} \; n)\)이면 n은 probabilistic prime이고, 진행을 멈춘다.

Step 3: \( j = 1 \; \\textrm{to} \; s - 1, \; {b^{2^jt}} \\equiv -1 \; (\\textrm{mod} \; n) \)이면 n은 probabilistic prime이고, 진행을 멈춘다.

Step 4: $n$은 합성수이다.

한 번의 시행에서 n이 probabilistic prime이라는 결과가 나왔을 때, 합성수 $n$이 Strong pseudoprime to base b일 확률은

$$ \\frac {| B |} {n} \le \\frac {1} {4} \;\; (\\because \\textrm{Thm 6.9}) $$

($n$이 소수일 경우 의미가 없는 공식)

Probabilistic Test긴 하지만, n개의 base에 대해서 probabilistic prime로 판정된 수가 소수가 아닐 확률이 \(\\frac {1} {4^n}\)로 매우 작으므로 실제로 사용 가능한 소수판정법이다.

More from this blog

한국의 학벌에 대한 생각

내 블로그의 제목이 kdy1: The way I think 인만큼 앞으로는 내 생각을 더 자주 올리려고 한다. 한국 기준으로, 학벌은 사람을 볼 때 꽤나 유용한 지표이지만, 절대적이지는 않다. 경험적인 얘기일 뿐이지만, 성균관대학교 자퇴생으로서 느낀 것들이 몇 가지 있다. 대학까지 간 사람의 학벌은 학습 능력 x 성실함 에 대체로 비례한다. 그래서 의미가

Apr 3, 20261 min read

인간 지능에 대한 메모장

최종 업데이트: 2026/03/15 지능의 유전 현재 인류 기준으로, 고지능자는 고지능 유전자가 많이 겹친 사람이다. 지능의 유전엔 X 염색체가 매우 중요한 역할을 한다. 그리고 이게 남자와 여자의 지능 분포 차이를 만든다. 극상위권에 여자가 거의 없는 이유가 이것이다. 고지능 X 염색체가 여자한테서 발현되려면 2개가 있어야 한다. 이는 인간의 생

Mar 15, 20262 min read

Ai 코딩 팁 2 (한국어)

발표 자료: https://gamma.app/docs/AI--2a52e7tk3eb1ch1 AI 활용법 관련해서 간단하게 발표를 했다. 발표 자료 앞쪽은 전에 블로그에 올린 글이랑 같은 내용이다. 이 글에서는 기존 글에서 다루지 않은 내용들을 다루겠다. 에러 메시지 및 로깅 구체적 타입 및 스키마 활용 any 타입은 사람에게도 위험하지만, AI에게는 더 위험하다. 마찬가지로, JSON.parse처럼 아무 제약 없는 파싱 느슨한 인터페이스 ...

Jan 30, 20265 min read

kdy1: The way I think

233 posts