EularProject 87:Prime power triples

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangzhengyi03539/article/details/80385542

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:

28 = 2 2 + 2 3 + 2 4
33 = 3 2 + 2 3 + 2 4
49 = 5 2 + 2 3 + 2 4
47 = 2 2 + 3 3 + 2 4

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;
}

猜你喜欢

转载自blog.csdn.net/zhangzhengyi03539/article/details/80385542
今日推荐