Solución a la Tarea 3: Tablas de múltiplos

La mayoría de ustedes intentó resolver esta tarea contando primero los múltiplos de A y luego los múltiplos de B, pero pronto se dieron cuenta que esto cuenta algunos números dos veces (aquellos que sean múltiplos de A y de B). Una forma de resolver este problema (pero no la única forma) es la de preguntar simultaneamente si un cierto número es múltiplo de A o de B y en ese caso contarlo. Si además se hace el recorrido de los números del 1 al N entonces el último número que sea múltiplo de A o de B es también el mayor que se estaba buscando. Esto lo hago abajo:

#include <stdio.h>

int main(void)

{
  int a, b, i, m, n, t = 0;

  scanf("%d%d%d", &a, &b, &n);
  for (i = 1; i <= n; i++)
    if (i%a == 0 || i%b == 0) {
      t++;
      m = i;
    }
  printf("%d %d\n", t, m);
  return 0;
}

Los valores de entrada y salida empleados para la evaluación fueron los siguientes:

Entrada         Salida
1 1 10          10 10
1 10 10         10 10
10 10 10        1 10
2 3 11          7 10
3 5 111         52 111
5 7 1111        349 1110
12 34 56        5 48
123 456 789     7 738
12 345 6789     580 6780
123 456 78910   810 78888

Para probar su tarea en UNIX, escriban la instrucción gcc tablasNN.c -o tablas para compilar su programa, y la instrucción ./tablas para correrlo. Algunos errores comúnes fueron: (a) Contar por separado los múltiplos y no darse cuenta que algunos se cuentan doble. (b) Revisar mal cuándo un número es múltiplo de otro. (c) Contar los múltiplos de A y B (y no los de A o B).