<?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%EC%A1%B0%ED%98%84%ED%83%9C</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%EC%A1%B0%ED%98%84%ED%83%9C"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CarmichaelNumbers/%EC%A1%B0%ED%98%84%ED%83%9C&amp;action=history"/>
	<updated>2026-05-15T05:42:59Z</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/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=30122&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/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=30122&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:49Z</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;
 일단 소수이면 안되기 때문에 살포시 저번에 [[FactorialFactors]] 에서 사용했던 알고리즘을 사용해서 단시간에 소수인지 확인하도록 하였다.&lt;br /&gt;
 그리고 [[CarmichaelNumbers]]가 뭔지 몰라서..인터넷에서 뒤져본 결과 최소 3개 이상의 소수의 곱이었던 관계로 그 부분도 추가해 주었다.&lt;br /&gt;
 마지막으로.. 심심 하면 새침한 표정으로 나타나는 변수크기 초과오류 아가씨..&lt;br /&gt;
 이 아가씨를 달래기 위해.. 그간 굴리지 않아서 녹이써서 안돌아가는 머리를 굴려 약간의 수학적 계산을 동원해서..&lt;br /&gt;
 아가씨가 입을 수 있는 크기의 숫자가 나머지로 나오도록 해주었다. 다행히 주어진 숫자의 범위가 크지않아 예쁜 숫자들의 범위에서 끝났다고나 할까..&lt;br /&gt;
 대신 연산이 느려지긴 했겠지만 뭐.. 범위가 작은 관계로 입력하면 바로바로 나와주는 쎈쓰~! 그래서 별로 신경쓰지는 않았다.&lt;br /&gt;
 이정도면 충분 하려나.. 그럼 좋은하루!!^^*&lt;br /&gt;
== 소스 ==&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 const int MINIMUM=2;&lt;br /&gt;
 const int MAXIMUM=65000;&lt;br /&gt;
 &lt;br /&gt;
 int Carmichael(int);&lt;br /&gt;
 int Sosu(int);&lt;br /&gt;
 &lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	while (1)&lt;br /&gt;
 	{&lt;br /&gt;
 		printf(&amp;quot;숫자를 입력해 주세요.\n&amp;quot;);&lt;br /&gt;
 		int number=-1;&lt;br /&gt;
 		int answer=0;&lt;br /&gt;
 		while ((0!=number)&amp;amp;amp;&amp;amp;amp;(number&amp;amp;lt;MINIMUM || MAXIMUM&amp;amp;lt;number))&lt;br /&gt;
 			scanf(&amp;quot;%d&amp;quot;,&amp;amp;amp;number);&lt;br /&gt;
 		if (0==number)&lt;br /&gt;
 			break;&lt;br /&gt;
 		answer=Carmichael(number);&lt;br /&gt;
 		if (0==answer)&lt;br /&gt;
 			printf(&amp;quot;%d is normal.\n&amp;quot;,number);&lt;br /&gt;
 		else &lt;br /&gt;
 			printf(&amp;quot;The number %d is a Carmichael number.\n&amp;quot;,number);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int Carmichael(int number)&lt;br /&gt;
 {&lt;br /&gt;
 	if (0!=Sosu(number))&lt;br /&gt;
 		return 0;&lt;br /&gt;
 	for (register int i=2; i&amp;amp;lt;number; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		unsigned int a=1;&lt;br /&gt;
 		for (register int j=0; j&amp;amp;lt;number; ++j)&lt;br /&gt;
 		{&lt;br /&gt;
 			a*=i;&lt;br /&gt;
 			a%=number;&lt;br /&gt;
 		}&lt;br /&gt;
 		if (i!=a)&lt;br /&gt;
 			return 0;&lt;br /&gt;
 	}&lt;br /&gt;
 	return 1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int Sosu(int number)&lt;br /&gt;
 {&lt;br /&gt;
 	if (2==number || 3==number)&lt;br /&gt;
 		return 1;&lt;br /&gt;
 	int *log_number=(int*)malloc((number+2)*sizeof(int)); &lt;br /&gt;
 	int gab; &lt;br /&gt;
 	log_number[2]=1; &lt;br /&gt;
 	log_number[3]=0; &lt;br /&gt;
 	for (register int i=4; i&amp;amp;lt;=number;i+=2) &lt;br /&gt;
 	{ &lt;br /&gt;
 		log_number[i]=1; &lt;br /&gt;
 		log_number[i+1]=0; &lt;br /&gt;
 	} &lt;br /&gt;
 	for (register int i=3; i&amp;amp;lt;=number; ++i) &lt;br /&gt;
 	{ &lt;br /&gt;
 		if (0==log_number[i]) &lt;br /&gt;
 		{ &lt;br /&gt;
 			if (i==number)&lt;br /&gt;
 			{&lt;br /&gt;
 				free(log_number); &lt;br /&gt;
 				return 1;&lt;br /&gt;
 			}&lt;br /&gt;
 			log_number[i]=1; &lt;br /&gt;
 			gab=i+i; &lt;br /&gt;
 			for(register int j=i+gab; j&amp;amp;lt;=number; j+=gab) &lt;br /&gt;
 				++log_number[j]; &lt;br /&gt;
 		} &lt;br /&gt;
 	} &lt;br /&gt;
 	if (log_number[number]&amp;amp;lt;3)&lt;br /&gt;
 	{&lt;br /&gt;
 		free(log_number);&lt;br /&gt;
 		return 2;&lt;br /&gt;
 	}&lt;br /&gt;
 	free(log_number);&lt;br /&gt;
 	return 0; &lt;br /&gt;
 }&lt;br /&gt;
== 저에게 할말 ==&lt;br /&gt;
----&lt;br /&gt;
[[AOI]] [[CarmichaelNumbers]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>