File tree 1 file changed +46
-0
lines changed
1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Copyright 2023 Google LLC.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ // Author: Christian Arnold (github: ctarnold)
16
+
17
+ // Find the greatest common divisor (gcd) of positive integers.
18
+ // Return -1 if invalid input.
19
+ // 2*log_2(b) recursive calls where b <= a
20
+ // warning: unspecified behavior for non-integer types.
21
+ export func gcd(a, b) {
22
+
23
+ // a >= b > 0 by Euclid's algo.
24
+ // validate this condition.
25
+ if a < 0 {
26
+ return -1
27
+ }
28
+ if b < 0 {
29
+ return -1
30
+ }
31
+ if a < b {
32
+ temp = a
33
+ a = b
34
+ b = temp
35
+ }
36
+ modulo = a mod b
37
+ if modulo == 0 {
38
+ return b
39
+ }
40
+ return gcd(b, modulo)
41
+ }
42
+
43
+
44
+
45
+
46
+
You can’t perform that action at this time.
0 commit comments