<?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=SummationOfFourPrimes%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD</id>
	<title>SummationOfFourPrimes/문보창 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=SummationOfFourPrimes%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=SummationOfFourPrimes/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;action=history"/>
	<updated>2026-05-15T00:12:54Z</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=SummationOfFourPrimes/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=39489&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=SummationOfFourPrimes/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=39489&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:09Z</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/02/18 Accepted 0:00.152 448 &lt;br /&gt;
소수에 대한 기본지식이 없어서 상당히 애를 먹은 문제이다. 2보다 큰 짝수는 모두 두 소수의 합으로 표현될 수 있다. 물론 아직까진 가설이다. 입력 천만기준에 대해 8이상의 모든 수는 소수 4개의 합으로 표현될 수 있다는 전제조건을 세우니 문제가 한결 쉬워 보였다. 왜냐하면 소수 4개의 합이기 때문에 소수중 유일한 짝수인 2를 이용하면 홀수 또한 소수의 합으로 표현할 수 있다. 8보다 작은 수를 제외하곤 모두 소수 4개의 합으로 표현되어진다. 실제로. 정수론에 대해 흥미를 느끼게 해 준 문제였다. &lt;br /&gt;
==== 소스 ====&lt;br /&gt;
 // no10168 - SumOfFourPrimes(a)  &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 MAX = 450;   &lt;br /&gt;
  &lt;br /&gt;
 void setPrimeArr(int * prim);      &lt;br /&gt;
 bool findPrim(int formerPrim, bool isEven, int * prim);      &lt;br /&gt;
 void showPrime(int prime1, int prime2, bool isEven);   &lt;br /&gt;
  &lt;br /&gt;
 int main()      &lt;br /&gt;
 {      &lt;br /&gt;
     int number;   &lt;br /&gt;
     int primes[MAX] = {2, 3, 5, 7, 11, 13,};      &lt;br /&gt;
     setPrimeArr(primes);     &lt;br /&gt;
     while (cin &amp;amp;gt;&amp;amp;gt; number)  &lt;br /&gt;
     {  &lt;br /&gt;
         if (number &amp;amp;lt; 8)      &lt;br /&gt;
              cout &amp;amp;lt;&amp;amp;lt; &amp;quot;Impossible.&amp;quot;;  &lt;br /&gt;
         else if (number % 2 != 0) &lt;br /&gt;
         { &lt;br /&gt;
              cout &amp;amp;lt;&amp;amp;lt; &amp;quot;2 3 &amp;quot;;      &lt;br /&gt;
              findPrim(number - 5, false, primes);  &lt;br /&gt;
         } &lt;br /&gt;
         else if (number % 4 == 0)                                                            &lt;br /&gt;
              findPrim(number/2, true, primes);   &lt;br /&gt;
         else  &lt;br /&gt;
         {  &lt;br /&gt;
              findPrim(number/2 - 1, false, primes); &lt;br /&gt;
              findPrim(number/2 + 1, false, primes);      &lt;br /&gt;
         }      &lt;br /&gt;
         cout &amp;amp;lt;&amp;amp;lt; endl;      &lt;br /&gt;
     }  &lt;br /&gt;
     return 0;      &lt;br /&gt;
 }   &lt;br /&gt;
  &lt;br /&gt;
 bool findPrim(int formerPrim, bool isEven, int * prim)      &lt;br /&gt;
 { &lt;br /&gt;
     bool success; &lt;br /&gt;
     int prime1, prime2;                                                  &lt;br /&gt;
     for (int i=0; i &amp;amp;lt; MAX; i++)      &lt;br /&gt;
     {      &lt;br /&gt;
         prime1 = prim[i];      &lt;br /&gt;
         prime2 = formerPrim - prime1;   &lt;br /&gt;
         success = true; &lt;br /&gt;
         for (int j=0; j &amp;amp;lt; MAX; j++)      &lt;br /&gt;
         {      &lt;br /&gt;
              if(prime2 &amp;amp;gt; prim[j] &amp;amp;amp;&amp;amp;amp; prime2 % prim[j] == 0)      &lt;br /&gt;
 	     { &lt;br /&gt;
                   success = false;; &lt;br /&gt;
                   break;      &lt;br /&gt;
 	     } &lt;br /&gt;
         }      &lt;br /&gt;
         if (success)      &lt;br /&gt;
         {      &lt;br /&gt;
              showPrime(prime1, prime2, isEven);      &lt;br /&gt;
              break;      &lt;br /&gt;
         }      &lt;br /&gt;
     }      &lt;br /&gt;
     return true;      &lt;br /&gt;
 }  &lt;br /&gt;
  &lt;br /&gt;
 void showPrime(int prime1, int prime2, bool isEven)  &lt;br /&gt;
 {  &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; prime1 &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot; &amp;amp;lt;&amp;amp;lt; prime2 &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot;;      &lt;br /&gt;
     if (isEven)      &lt;br /&gt;
         cout &amp;amp;lt;&amp;amp;lt; prime1 &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot; &amp;amp;lt;&amp;amp;lt; prime2;      &lt;br /&gt;
 }     &lt;br /&gt;
  &lt;br /&gt;
 void setPrimeArr(int * prim)      &lt;br /&gt;
 {      &lt;br /&gt;
     int countPrimes = 6;      &lt;br /&gt;
     bool boolPrimes;      &lt;br /&gt;
     for (int i=15; ; i+=2)      &lt;br /&gt;
     {            &lt;br /&gt;
         boolPrimes = true;      &lt;br /&gt;
         for (int j=3; j &amp;amp;lt;= sqrt(i); j+=2)      &lt;br /&gt;
         {      &lt;br /&gt;
             if (i % j == 0)      &lt;br /&gt;
             {      &lt;br /&gt;
                 boolPrimes = false;      &lt;br /&gt;
                 break;      &lt;br /&gt;
             }      &lt;br /&gt;
         }      &lt;br /&gt;
         if(boolPrimes)      &lt;br /&gt;
             prim[countPrimes++] = i;   &lt;br /&gt;
         if (countPrimes &amp;amp;gt; MAX) &lt;br /&gt;
             break; &lt;br /&gt;
    }      &lt;br /&gt;
 }    &lt;br /&gt;
----&lt;br /&gt;
[[SummationOfFourPrimes]] [[문보창]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>