MCD con tolerancia c

Aquí aparecerá el valor de d.
Aquí aparecerá el valor de d/a.
Aquí aparecerá el valor de d/b.

Explicación matemática del cálculo de d:

El máximo común divisor (mcd) de dos números a y b es el primer número d tal que el resto de a/d es cero y lo mismo ocurre con el resto de b/d, es decir, la distancia de d a un divisor de a es cero, tolerancia cero (c = 0), y lo mismo con la distantia de d a un múltiplo de b.

Con tolerancia c, el mcd(a, b) se define como el primer número (en orden decreciente desde el min(a, b)) d tal que d no diste más de c/2 de un divisor de a, y lo mismo con b.

Cálculo del valor de d en el script:

// Encontrar el primer número d tal que d <= a, d <= b, y las condiciones de los módulos se cumplen
let d = Math.min(a, b); // d debe ser menor o igual que a y b, comenzamos con el menor
while (true) {
    const conditionA = Math.min(a % d, d - (a % d)); // Calcula la distancia mínima al valor 0 del módulo d
    const conditionB = Math.min(b % d, d - (b % d)); // Calcula la distancia mínima al valor 0 del módulo d
    if (conditionA <= c / 2 && conditionB <= c / 2) { // Si ambas distancias cumplen la tolerancia c/2
        break; // Se encontró el valor de d que cumple las condiciones
    }
    d--; // Incrementar d para continuar la búsqueda
}

Podíamos llamar a este número d máximo común divisor de a y b con tolerancia c, mcdt(a,b;c)

En la página de este enlace hemos puesto lo que sería el mínimo común múltiplo con tolerancia c, mcmt(a,b;c)