<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CarmichaelNumbers%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD</id>
	<title>CarmichaelNumbers/문보창 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CarmichaelNumbers%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CarmichaelNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;action=history"/>
	<updated>2026-05-14T17:51:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=CarmichaelNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=87153&amp;oldid=prev</id>
		<title>Maintenance script: Table transclusion repair v1</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CarmichaelNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=87153&amp;oldid=prev"/>
		<updated>2026-03-27T12:46:16Z</updated>

		<summary type="html">&lt;p&gt;Table transclusion repair v1&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:46, 27 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 소감 ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 소감 ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{| &lt;/del&gt;2005/05/09 Accepted 0:02.826 452 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;2005/05/09 Accepted 0:02.826 452&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;중간에 발생하는 버그를 잡는데 대부분의 시간을 허비했다. 65000 이란 수는 작지만 65000의 제곱은 int형의 범위를 벗어난다. ㅡㅡ; 오버플로우를 교모히 이용한 함정에 고생했다.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;중간에 발생하는 버그를 잡는데 대부분의 시간을 허비했다. 65000 이란 수는 작지만 65000의 제곱은 int형의 범위를 벗어난다. ㅡㅡ; 오버플로우를 교모히 이용한 함정에 고생했다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l107&quot;&gt;Line 107:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 107:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[CarmichaelNumbers]] [[AOI]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[CarmichaelNumbers]] [[AOI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=CarmichaelNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=30121&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CarmichaelNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=30121&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==== 소감 ====&lt;br /&gt;
{{| 2005/05/09 Accepted 0:02.826 452 |}}&lt;br /&gt;
&lt;br /&gt;
중간에 발생하는 버그를 잡는데 대부분의 시간을 허비했다. 65000 이란 수는 작지만 65000의 제곱은 int형의 범위를 벗어난다. ㅡㅡ; 오버플로우를 교모히 이용한 함정에 고생했다. &lt;br /&gt;
Carmichael Numbers를 찾는 Theorem이 있는 듯하다. 그러나 때려맞추기(?)로 문제를 풀어도 풀린다. 그러나 속도는 떨어진다.&lt;br /&gt;
&lt;br /&gt;
==== 코드 ====&lt;br /&gt;
 // no10006 - Carmichael Numbers&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cmath&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 const int NORMAL = 1;&lt;br /&gt;
 const int CARMICHAEL = 2;&lt;br /&gt;
 &lt;br /&gt;
 bool isPrime(int n);&lt;br /&gt;
 void show(int n, int type);&lt;br /&gt;
 bool isCarmichael(int n);&lt;br /&gt;
 bool passFermatTest(int a, int n);&lt;br /&gt;
 int findModulo(unsigned int a, unsigned int n);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	int n;			// n = input integer ( 2 &amp;amp;lt; n &amp;amp;lt; 65,000)&lt;br /&gt;
 	while (cin &amp;amp;gt;&amp;amp;gt; n &amp;amp;amp;&amp;amp;amp; n != 0)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (isPrime(n))&lt;br /&gt;
 		{&lt;br /&gt;
 			show(n, NORMAL);&lt;br /&gt;
 			continue;&lt;br /&gt;
 		}&lt;br /&gt;
 		if (isCarmichael(n))&lt;br /&gt;
 			show(n, CARMICHAEL);&lt;br /&gt;
 		else&lt;br /&gt;
 			show(n, NORMAL);&lt;br /&gt;
 	}		&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool isPrime(int n)&lt;br /&gt;
 {&lt;br /&gt;
 	for (int i = 3; i &amp;amp;lt;= sqrt(n) + 1; i += 2)&lt;br /&gt;
 		if (n % i == 0)&lt;br /&gt;
 			return false;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void show(int n, int type)&lt;br /&gt;
 {&lt;br /&gt;
 	if (type == NORMAL)&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; n &amp;amp;lt;&amp;amp;lt; &amp;quot; is normal.\n&amp;quot;;&lt;br /&gt;
 	else&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;The number &amp;quot; &amp;amp;lt;&amp;amp;lt; n &amp;amp;lt;&amp;amp;lt; &amp;quot; is a Carmichael number.\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool isCarmichael(int n)&lt;br /&gt;
 {&lt;br /&gt;
 	for (int i = 2; i &amp;amp;lt;= n - 1; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (!passFermatTest(i, n))&lt;br /&gt;
 			return false;&lt;br /&gt;
 	}&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool passFermatTest(int a, int n)&lt;br /&gt;
 {	&lt;br /&gt;
 	int modulo = findModulo(a, n);&lt;br /&gt;
 	if (modulo == a)&lt;br /&gt;
 		return true;&lt;br /&gt;
 	return false;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int findModulo(unsigned int a, unsigned int n)&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned int modN = n;&lt;br /&gt;
 	unsigned int expo = 2;&lt;br /&gt;
 	unsigned int mod = (a * a) % n;&lt;br /&gt;
 	unsigned int modulo = 1;&lt;br /&gt;
 	while (1)&lt;br /&gt;
 	{&lt;br /&gt;
 		while (expo * 2 &amp;amp;lt;= modN)&lt;br /&gt;
 		{&lt;br /&gt;
 			expo *= 2;&lt;br /&gt;
 			mod = (mod * mod) % n;&lt;br /&gt;
 		}&lt;br /&gt;
 		&lt;br /&gt;
 		if (modN - expo &amp;amp;lt;= 6)&lt;br /&gt;
 		{	&lt;br /&gt;
 			for (int i=0; i &amp;amp;lt; modN-expo; i++) &lt;br /&gt;
 			{&lt;br /&gt;
 				mod = (mod * a) % n;&lt;br /&gt;
 			}&lt;br /&gt;
 			break;&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			modulo = (modulo * mod) % n;&lt;br /&gt;
 			modN -= expo;&lt;br /&gt;
 			expo = 2;&lt;br /&gt;
 			mod = (a * a) % n;			&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	return (modulo * mod) % n;&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[[CarmichaelNumbers]] [[AOI]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>