diff --git a/src/lib/exercises/src/hackerrank/projecteuler/euler001.cpp b/src/lib/exercises/src/hackerrank/projecteuler/euler001.cpp index 88de0cb..1bbb37c 100644 --- a/src/lib/exercises/src/hackerrank/projecteuler/euler001.cpp +++ b/src/lib/exercises/src/hackerrank/projecteuler/euler001.cpp @@ -43,7 +43,12 @@ unsigned long euler001(int a, int b, int n) { // Since, we need the sum of multiples less than N n = n - 1; - unsigned long lcm = (a * b) / gcd(a, b); + unsigned long the_gcd = gcd(a, b); + if (the_gcd == 0) { + return 0; + } + + unsigned long lcm = (a * b) / the_gcd; return sum_of_arithmetic_progression(n, a) + sum_of_arithmetic_progression(n, b) - diff --git a/src/tests/unit/lib/hackerrank/projecteuler/euler001.testcases.json b/src/tests/unit/lib/hackerrank/projecteuler/euler001.testcases.json index 2021998..333b1ee 100644 --- a/src/tests/unit/lib/hackerrank/projecteuler/euler001.testcases.json +++ b/src/tests/unit/lib/hackerrank/projecteuler/euler001.testcases.json @@ -1,6 +1,32 @@ [ - { "a": 3, "b": 5, "n": 10, "expected": 23 }, - { "a": 5, "b": 3, "n": 10, "expected": 23 }, - { "a": 3, "b": 5, "n": 100, "expected": 2318 }, - { "a": 3, "b": 5, "n": 1000, "expected": 233168 } + { + "a": 0, + "b": 0, + "n": 0, + "expected": 0 + }, + { + "a": 3, + "b": 5, + "n": 10, + "expected": 23 + }, + { + "a": 5, + "b": 3, + "n": 10, + "expected": 23 + }, + { + "a": 3, + "b": 5, + "n": 100, + "expected": 2318 + }, + { + "a": 3, + "b": 5, + "n": 1000, + "expected": 233168 + } ]