PC/UVa:110705/10168
本来想着把所有素数枚举出来,然后去优化那个四重循环,但是枚举小于10 000 000的素数时间太长了。
应该根据哥德巴赫猜想做。
#include <iostream>
using namespace std;
bool Prime(int n)
{
if (n == 2) return true;
else if (n % 2 == 0) return false;
else{
for (int i = 3; i * i <= n; i++)
{
if (n % i == 0) return false;
}
return true;
}
}
int main()
{
int n = 0;
while (cin >> n){
if (n < 8){
cout << "Impossible." << endl;
continue;
}
else if (n % 2 == 0){
cout << 2 << ' ' << 2 << ' ';
n -= 4;
}
else{
cout << 2 << ' ' << 3 << ' ';
n -= 5;
}
for (int i = 2; i + i <= n; i++)
{
if (Prime(i) && Prime(n - i)){
cout << i << ' ' << n - i << endl;
break;
}
}
}
return 0;
}
/*
24
36
46
*/
229

被折叠的 条评论
为什么被折叠?



