#include #include #include "Exercises.h" // Gives multiple of all multiples of 3 or 5 under given number. int Ex1(int in) { int out = 0; for (int i = 3; i < in; i += 3) out += i; for (int i = 5, t = 1; i < in; i += 5, t++) { if (t == 3) t = 0; else out += i; } return out; } // Gives multiple of all even fibonacci sequence values under given number int Ex2(int in) { int v1 = 0, v2 = 1, f = 0, out = 0; while (true) { // calc fibonacci value f = v1 + v2; v1 = v2; v2 = f; // stop if fibonacci value over max if (in < f) break; // skip if uneven if ((f & 0b1) == 1) continue; // sum out += f; } return out; } /* Works but needs to be optimised for large number: 600851475143 */ // Gives biggest prime factor of given number unsigned long long Ex3(unsigned long long in) { vector primes = { 2 }; unsigned long long biggest_prime = -1; for (unsigned long long num = 2; num <= in; num++) { // Find prime bool isPrime = true; for (auto prime : primes) { isPrime = num % prime != 0; if (!isPrime) break; } if (!isPrime) continue; primes.push_back(num); // Is number factor of input, if not go to next number. if (in % num != 0) continue; // Save current prime as biggest prime and promote other factor as new max. biggest_prime = num; in = in / num; } return biggest_prime; }