File tree 2 files changed +61
-10
lines changed
2 files changed +61
-10
lines changed Original file line number Diff line number Diff line change 1
- package Others ;
1
+ package Maths ;
2
2
3
3
/**
4
4
* This is Euclid's algorithm which is used to find the greatest common denominator
8
8
*/
9
9
public class GCD {
10
10
11
+ /**
12
+ * get greatest common divisor
13
+ *
14
+ * @param num1 the first number
15
+ * @param num2 the second number
16
+ * @return gcd
17
+ */
11
18
public static int gcd (int num1 , int num2 ) {
19
+ if (num1 < 0 || num2 < 0 ) {
20
+ throw new ArithmeticException ();
21
+ }
12
22
13
- if (num1 == 0 )
14
- return num2 ;
15
-
16
- while (num2 != 0 ) {
17
- if (num1 > num2 )
18
- num1 -= num2 ;
19
- else
20
- num2 -= num1 ;
23
+ if (num1 == 0 || num2 == 0 ) {
24
+ return Math .abs (num1 - num2 );
21
25
}
22
26
23
- return num1 ;
27
+ while (num1 % num2 != 0 ) {
28
+ int remainder = num1 % num2 ;
29
+ num1 = num2 ;
30
+ num2 = remainder ;
31
+ }
32
+ return num2 ;
24
33
}
25
34
35
+ /**
36
+ * get greatest common divisor in array
37
+ *
38
+ * @param number contains number
39
+ * @return gcd
40
+ */
26
41
public static int gcd (int [] number ) {
27
42
int result = number [0 ];
28
43
for (int i = 1 ; i < number .length ; i ++)
Original file line number Diff line number Diff line change
1
+ package Maths ;
2
+
3
+ /**
4
+ * @author https://github.com/shellhub/
5
+ */
6
+ public class GCDRecursion {
7
+ public static void main (String [] args ) {
8
+ System .out .println (gcd (20 , 15 )); /* output: 5 */
9
+ System .out .println (gcd (10 , 8 )); /* output: 2 */
10
+ System .out .println (gcd (gcd (10 , 5 ), gcd (5 , 10 ))); /* output: 5 */
11
+ }
12
+
13
+ /**
14
+ * get greatest common divisor
15
+ *
16
+ * @param a the first number
17
+ * @param b the second number
18
+ * @return gcd
19
+ */
20
+ public static int gcd (int a , int b ) {
21
+
22
+ if (a < 0 || b < 0 ) {
23
+ throw new ArithmeticException ();
24
+ }
25
+
26
+ if (a == 0 || b == 0 ) {
27
+ return Math .abs (a - b );
28
+ }
29
+
30
+ if (a % b == 0 ) {
31
+ return b ;
32
+ } else {
33
+ return gcd (b , a % b );
34
+ }
35
+ }
36
+ }
You can’t perform that action at this time.
0 commit comments