EularProject 87:Prime power triples
阿新 • • 發佈:2018-12-23
The smallest number expressible as the sum of a prime square, prime cube, and prime fourth power is 28. In fact, there are exactly four numbers below fifty that can be expressed in such a way:
How many numbers below fifty million can be expressed as the sum of a prime square, prime cube, and prime fourth power?
參考程式碼:
#include <iostream>
using namespace std;
#define MAX 7071
#define TAR 50000000
char prime[MAX] = { 0 };
char cnt[TAR] = { 0 };
int main()
{
int result = 0;
for (int i = 2; i < MAX; i++) {
prime[i] = 1;
}
for (int i = 2; i < MAX; i++) {
if (prime[i]) {
for (int j = 2 * i; j < MAX; j += i) {
prime[j] = 0;
}
}
}
for (int i = 2; i*i < TAR; i++) {
if (prime[i]) {
int temp1 = i*i;
for (int j = 2; temp1 + j*j*j < TAR; j++) {
if (prime[j]) {
int temp2 = temp1 + j*j*j;
for (int k = 2; temp2 + k*k*k*k < TAR; k++) {
if (prime[k]) {
cnt[temp2 + k*k*k*k] = 1;
}
}
}
}
}
}
for (int i = 2; i < TAR; i++) {
result += cnt[i];
}
cout << result;
return 0;
}