감2 ¶
- 과O
- 곰곰 결과 3개 .( 겠) 그 구고 값 3개 .
- impossible과 Impossible. 거.
2 ¶
~cpp
//10168
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
#define PRIME_TABLE_SIZE 100
int primeTable[PRIME_TABLE_SIZE];
int primeCnt = 0;
void makePrimeTable()
{
int i, j;
primeTable[primeCnt++] = 2;
for (i = 3; primeCnt < PRIME_TABLE_SIZE; i += 2)
{
for (j = 0; j < primeCnt; j++)
{
if (i % primeTable[j] == 0)
break;
else if (i / primeTable[j] <= primeTable[j])
{
primeTable[primeCnt++] = i;
break;
}
}
}
}
bool isPrime(int n)
{
int i;
if (n != 2 && n % 2 == 0)
return false;
for (i = 3; i <= sqrt(n); i += 2)
{
if (n % i == 0)
return false;
}
return true;
}
int main()
{
int input;
int sumOfThreePrimes;
int primes[4] = {0};
int i, j, k;
makePrimeTable();
while (cin >> input)
{
primes[0] = primes[1] = primes[2] = primes[3] = 0;
for (i = input - 6; i >= 2; i--)
{
if (isPrime(i))
{
primes[0] = i;
sumOfThreePrimes = input - i;
break;
}
}
if (primes[0] == 0)
{
cout << "Impossible." << endl;
continue;
}
for (i = 0; i < 100; i++)
for (j = 0; j < 100; j++)
for (k = 0; k < 100; k++)
{
if (sumOfThreePrimes == primeTable[i] + primeTable[j] + primeTable[k])
{
primes[1] = primeTable[i];
primes[2] = primeTable[j];
primes[3] = primeTable[k];
i = j = k = 100;
}
}
cout << primes[0] << " " << primes[1] << " " << primes[2] << " " << primes[3] << endl;
}
return 0;
}
감1 ¶
과X
근 . 공 .
근 . 공 .
1 ¶
~cpp
#include <iostream>
#include <cmath>
using namespace std;
bool is_prime(int n);
void sum_4prime(int n);
int prime[500000];
int prime_cnt = 0;
void main()
{
int input;
cin >> input;
sum_4prime(input);
}
bool is_prime(int n)
{
for (int i = 2; i <= sqrt(n); i++)
if (n % i == 0)
return false;
return true;
}
void sum_4prime(int n)
{
int i, j, k, l;
for (i = 2; i <= n; i++)
{
if (is_prime(i))
{
prime[prime_cnt++] = i;
//cout << i << endl;
}
}
for (i = 0; i < prime_cnt; i++)
{
//if (prime[i] + prime[prime_cnt - 1] * 3 < n)
// continue;
for (j = 0; j < prime_cnt; j++)
{
//if (prime[i] + prime[j] >= n)
// break;
//if (prime[i] + prime[j] + prime[prime_cnt - 1] * 2 < n)
// continue;
for (k = 0; k < prime_cnt; k++)
{
//if (prime[i] + prime[j] + prime[k] >= n)
// break;
//if (prime[i] + prime[j] + prime[k] + prime[prime_cnt - 1] < n)
// continue;
for (l = 0; l < prime_cnt; l++)
{
//if (prime[i] + prime[j] + prime[k] + prime[l] > n)
// break;
if (prime[i] + prime[j] + prime[k] + prime[l] == n)
{
cout << prime[i] << " " << prime[j] << " " << prime[k] << " " << prime[l] << endl;
return;
}
}
}
}
}
cout << "Impossible" << endl;
}










