Bash Chocolates By Numbers
gcd() {
local _n=$1 _m=$2
if (( _n % _m == 0 )); then
echo "$_m"
return
fi
gcd "$_m" $(( _n % _m ))
}
chocolates_by_numbers() {
local _n=$1 _m=$2
local _g
_g=$(gcd "$_n" "$_m")
echo $(( (_n * _m / _g) / _m ))
}
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
C++ Chocolates By Numbers
long long chocolatesGcd(long long n, long long m)
{
if (n % m == 0) {
return m;
}
return chocolatesGcd(m, n % m);
}
long long chocolatesByNumbers(long long n, long long m)
{
long long g = chocolatesGcd(n, m);
return ((n * m) / g) / m;
}
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
C# Chocolates By Numbers
static long ChocolatesByNumbers(long n, long m)
{
long Gcd(long x, long y) => x % y == 0 ? y : Gcd(y, x % y);
return (n * m) / Gcd(n, m) / m;
}
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
Elixir Chocolates By Numbers
defmodule ChocolatesByNumbers do
def chocolates_by_numbers(n, m) do
g = gcd(n, m)
n * m |> div(g) |> div(m)
end
defp gcd(n, m) when rem(n, m) == 0, do: m
defp gcd(n, m), do: gcd(m, rem(n, m))
end
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
Erlang Chocolates By Numbers
-module(chocolates_by_numbers).
-export([chocolates_by_numbers/2]).
chocolates_by_numbers(N, M) ->
G = gcd(N, M),
(N * M) div G div M.
gcd(N, M) when N rem M =:= 0 -> M;
gcd(N, M) -> gcd(M, N rem M).
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
Go Chocolates By Numbers
func chocolatesByNumbers(n, m int) int {
var gcd func(n, m int) int
gcd = func(n, m int) int {
if n%m == 0 {
return m
}
return gcd(m, n%m)
}
return n / gcd(n, m)
}
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
Haskell Chocolates By Numbers
chocolatesByNumbers :: Int -> Int -> Int
chocolatesByNumbers n m = (n * m) `div` gcd n m `div` m
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
Java Chocolates By Numbers
public class Solution {
public static int chocolatesByNumbers(int n, int m) {
long gcd = gcd(n, m);
long result = ((long) n * m / gcd) / m;
return (int) result;
}
private static long gcd(long n, long m) {
if (n % m == 0) {
return m;
}
return gcd(m, n % m);
}
}
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
Lisp Chocolates By Numbers
(defun choc-gcd (n m)
(if (zerop (mod n m))
m
(choc-gcd m (mod n m))))
(defun chocolates-by-numbers (n m)
(/ (/ (* n m) (choc-gcd n m)) m))
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.
PHP Chocolates By Numbers
function chocolatesByNumbers(int $n, int $m): int
{
$gcd = static function (int $n, int $m) use (&$gcd) {
if ($n % $m === 0) {
return $m;
}
return $gcd($m, $n % $m);
};
return (($n * $m) / $gcd($n, $m)) / $m;
}
This uses the greatest common divisor to figure out how many chocolates get eaten before the pattern repeats.