commit 08f588744e6d4ab8de18614dd0d140e2f18c8cc6
parent 1200e4df6af5c92ebadb90d2cab4278a2d357725
Author: mpizzzle <m@michaelpercival.xyz>
Date: Mon, 21 Sep 2020 18:14:26 +0100
moving solution 87 into Euler class
Diffstat:
5 files changed, 7 insertions(+), 46 deletions(-)
diff --git a/Euler.h b/Euler.h
@@ -82,4 +82,5 @@ public:
llui CoinPartitions();
std::string PasscodeDerivation();
int SquareRootDigitalExpansion();
+ uint64_t PrimePowerTriples();
};
diff --git a/EulerUtility.cpp b/EulerUtility.cpp
@@ -59,13 +59,7 @@ std::vector<int> EulerUtility::getPrimesUnderCeiling(int ceiling)
std::vector<int> EulerUtility::getPrimesUnderCeilingIndexed(int ceiling)
{
- std::vector<int> primes;
-
- primes.push_back(-1);
- primes.push_back(-1);
- primes.push_back(2);
- primes.push_back(3);
- primes.push_back(-1);
+ std::vector<int> primes = { -1, -1, 2, 3, -1 };
bool is_prime;
diff --git a/EulerUtility.h b/EulerUtility.h
@@ -1,4 +1,5 @@
#include <cmath>
+#include <cstdint>
#include <string>
#include <vector>
diff --git a/Euler_87.cpp b/Euler_87.cpp
@@ -1,45 +1,16 @@
-#include <ctime>
-#include <cstdint>
#include <iostream>
#include <unordered_set>
-#include <vector>
-std::vector<int> getPrimesIndexed(int ceiling)
-{
- std::vector<int> primes = { -1, -1, 2, 3, -1 };
-
- bool is_prime;
-
- for (int i = 5; i < ceiling; i += 2)
- {
- is_prime = true;
-
- for(int j = 3; j * j <= i && is_prime; j += 2)
- if(i % j == 0) is_prime = false;
-
- if (is_prime)
- {
- primes.push_back(i);
- primes.push_back(-1);
- }
- else
- {
- primes.push_back(-1);
- primes.push_back(-1);
- }
- }
-
- return primes;
-}
+#include "Euler.h"
-uint64_t PrimePowerTriples()
+uint64_t Euler::PrimePowerTriples()
{
//what is the upper bound?
//bc <<< "84^4 < 50000000"
//bc <<< "368^3 < 50000000"
//bc <<< "7071^2 < 50000000"
- std::vector<int> primes = getPrimesIndexed(7072);
+ std::vector<int> primes = EulerUtility::getPrimesUnderCeilingIndexed(7072);
std::vector<uint64_t> cubes;
std::vector<uint64_t> fourths;
std::unordered_set<uint64_t> solutions;
@@ -71,10 +42,3 @@ uint64_t PrimePowerTriples()
return solutions.size();
}
-
-int main() {
- std::clock_t start = std::clock();
- std::cout << "solution: " << PrimePowerTriples() << std::endl;
- std::cout << "duration: " << std::clock() - start << "ms" << std::endl;
- return 0;
-}
diff --git a/main.cpp b/main.cpp
@@ -86,6 +86,7 @@ int main() {
//std::cout << e.CoinPartitions() << std::endl;
//std::cout << e.PasscodeDerivation() << std::endl;
//std::cout << e.SquareRootDigitalExpansion() << std::endl;
+ std::cout << e.PrimePowerTriples() << std::endl;
std::cout << "duration: " << std::clock() - start << "ms" << std::endl;
return 0;