project-euler

https://projecteuler.net/
Log | Files | Refs | README

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:
MEuler.h | 1+
MEulerUtility.cpp | 8+-------
MEulerUtility.h | 1+
MEuler_87.cpp | 42+++---------------------------------------
Mmain.cpp | 1+
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;