egcd top-level property
dynamic
egcd
getter/setter pair
Extended Euclidean algorithm.
Returns a list of lists where each sublist contains [d, x, y] for each pair.
Example:
print(egcd(48, 18, 24)); // Output: [[6, -1, 3], [6, -1, 1]]
Implementation
dynamic egcd = VarArgsFunction((args, kwargs) {
List<num> numbers = _getArgsParams(args);
List<List<Complex>> results = [];
// Helper function to compute egcd for a pair of numbers
List<Complex> egcdPair(num a, num b) {
num x = 1, y = 0, x1 = 0, y1 = 1;
while (b != 0) {
num q = a ~/ b;
num r = mod(a, b); // Modulo operation using custom function
num x2 = x - q * x1;
num y2 = y - q * y1;
x = x1;
y = y1;
x1 = x2;
y1 = y2;
a = b;
b = r;
}
return [Complex(a), Complex(x), Complex(y)];
}
// Iterate through pairs of numbers and compute egcd using the iterative function
for (int i = 0; i < numbers.length - 1; i++) {
results.add(egcdPair(numbers[i], numbers[i + 1]));
}
return results;
});