domingo, 16 de mayo de 2021

El problema de dado un número entero, encontrar otro entero que sumado al anterior sea divisible por otro entero determinado

 En este caso resolvemos el problema suponiendo que la suma es divisible por 7 y después lo extendemos al resto de los enteros.

Tomemos por ejemplo el número 30 y queremos encontrar otro entero que sumado al anterior sea dicha suma múltiplo de 7, y además le añadimos que sea la menor suma que cumple esta condición.

la lista de los primeros  múltiplos de 7 son:

  • 7, 21, 28, 35, 42, 49, 56, etc
Entonces el 30 se encuentra entre el 28 y 35, por lo que el número múltiplo de 7 más cercano es el 35 y el  valor que le tenemos que sumar a 30 es  35-30=5.

Se puede extrapolar a cualquier divisor no solo el 7.

Abajo dejo el código en Java para cualquier divisor :


import java.util.Scanner;

public class Divisible {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);

        int numero;
        int divisor;
        int paso;

        // entrada de datos
        System.out.println("Introducir el mumero divisor ");
        divisor=sc.nextInt();             
        
        System.out.println("Introducir el mumero base a sumar ");
        numero=sc.nextInt();

        paso=divisor*(numero/divisor+1);

        // cálculo y resultados
        System.out.printf("Hay que sumar %d a %d para obtener un multiplo de %d que es %d%n",paso-numero,numero,divisor,paso);

        sc.close(); // cerramos el Scanner
    }
    
}

no incluye condicionales, ni búsquedas por bucle que sería la primera tentación para resolver el problema.

No hay comentarios:

Publicar un comentario