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).