# ChocolatesByNumbers – Codility – Solution

Java solution to Codility ChocolatesByNumbers problem (Lesson 12 – Euclidean algorithm) which scored 100%. The problem is to count the number of chocolates you will eat when there are N chocolates in a circle.

The strategy is to divide N by the greatest common divisor of N and M.

Reference

Solution to Chocolates-By-Numbers (Code Says)

```12345678910111213package com.codility.lesson12.euclidean;

public class ChocolatesByNumbers {
public int solve(int N, int M) {
return N / gcdByDivision(N, M);
}

int gcdByDivision(int A, int B) {
if(A % B == 0) return B;
else           return gcdByDivision(B, A % B);
}

}

```

TestNG test cases for this problem which all passed:

```1234567891011121314151617181920212223242526272829303132333435package test.com.codility.lesson12.euclidean;

import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import com.codility.lesson12.euclidean.ChocolatesByNumbers;

public class ChocolatesByNumbersTests {
private ChocolatesByNumbers solution;

@BeforeTest
public void setUp() {
solution = new ChocolatesByNumbers();
}

@DataProvider(name = "data1")
public Object [][] createData1() {
return new Object [][] {
new Object [] { 10, 4, 5 },
new Object [] { 10, 3, 10 },
new Object [] { 5, 6, 5 },
new Object [] { 5, 7, 5 },
new Object [] { 1, 1, 1 },
new Object [] { 2, 1, 2 },
new Object [] { 100, 1, 100 },
};
}

@Test(dataProvider = "data1")
public void verifySolution(int pN, int pM, int pExpected) {
Assert.assertEquals(solution.solve(pN, pM), pExpected);
}
}

```