~cpp
#include<iostream>
using namespace std;
int* set_prime_array(int* prime_array,int number);
bool check_prime_number(int n);
void find_four_number(int* prime_array,int count,int number);
int count=0; //만들어진 소수의 총 수를 구한다.
void main()
{
int number = 0;
cout<<"수를 입력하세요(단. 0<N<10000000) :";
cin>>number;
prime_array = set_prime_array(prime_array,number);
find_four_number(prime_array,count,number);
delete[] prime_array;
}
int* set_prime_array(int* prime_array,int number)
{
int* prime_array = new int[number];
for(int i=1 ; i<number ; i++)
{
if(check_prime_number(i)==true)
{
prime_array[count]=i;
count++;
}
}
return prime_array;
}
bool check_prime_number(int n)//전달된 값이 소수인지를 판별합니다.
{
if(n==1)
return false;
else if(n==2 || n==3) //숫자 1,2,3은 소수이다.
return true;
else if(n>3)
{
for(int j=2 ; j<n ; j++)
{
if(n%j==0)
return false; //사이에 나누어 떨어지는 수가 하나라도 있으면...
}
return true; //사이에 나누어 떨어지는가 없다.
}
return false;
}
void find_four_number(int* prime_array,int count,int number)
{
int temp=0;
for(int a=0;a<count;a++)
for(int b=0;b<count;b++)
for(int c=0;c<count;c++)
for(int d=0;d<count;d++)
{
if(prime_array[a]+prime_array[b]+prime_array[c]+prime_array[d]==number)
{
cout<<prime_array[a]<<","<<prime_array[b]<<","<<prime_array[c]<<","<<prime_array[d];
cout<<endl;
temp++;
}
}
if(temp==0)
cout<<"조건을 만족하는 정답은 없습니다.!!!!";
}