From 29b9da0f5eb36f050c362c540903e952cb0d1f4e Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Fri, 31 Dec 2021 15:52:37 +0100 Subject: [PATCH] 5kyu: add primes in numbers Signed-off-by: Matej Focko --- 5kyu/primes_in_numbers/solution.rb | 32 ++++++++++++++++++++++++++++++ README.md | 1 + 2 files changed, 33 insertions(+) create mode 100644 5kyu/primes_in_numbers/solution.rb diff --git a/5kyu/primes_in_numbers/solution.rb b/5kyu/primes_in_numbers/solution.rb new file mode 100644 index 0000000..8f89f6e --- /dev/null +++ b/5kyu/primes_in_numbers/solution.rb @@ -0,0 +1,32 @@ +def get_power_and_remainder(n, p) + q = 0 + while n % p == 0 do + n /= p + q += 1 + end + + [n, q] +end + +def format_prime_factor(p, q) + case q + when 0 + "" + when 1 + "(" + p.to_s + ")" + else + "(" + p.to_s + "**" + q.to_s + ")" + end +end + +def prime_factors(n) + result = (2..Math.sqrt(n) + 1).reduce("") { |factors, p| + n, q = get_power_and_remainder(n, p) + factors + format_prime_factor(p, q) + } + + if n > 1 then + result += format_prime_factor(n, 1) + end + result +end diff --git a/README.md b/README.md index aeb4bdf..a301a46 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,7 @@ ### Ruby - [Best travel](https://www.codewars.com/kata/55e7280b40e1c4a06d0000aa) - [solution](5kyu/best_travel) +- [Primes in numbers](https://www.codewars.com/kata/54d512e62a5e54c96200019e) - [solution](5kyu/primes_in_numbers) ## 6 kyu