Updated to initial implementation using cpp.

This commit is contained in:
2026-08-07 13:32:49 +02:00
parent 2eb04509db
commit 78a1607789
32 changed files with 325 additions and 177 deletions

65
Exercises.cpp Normal file
View File

@@ -0,0 +1,65 @@
#include <iostream>
#include <vector>
#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<unsigned long long> 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;
}