Solución a la Tarea 1: El Problema 3n+1
A continuación muestro un programa que resuelve el problema
propuesto. Observe que todo el programa consiste de un ciclo (que se
detiene cuando hemos alcanzado el número 1) y un par de
decisiones (una para determinar la paridad y así hacer el
cálculo correcto, la otra para determinar si hemos encontrado un
número más grande).
#include
<stdio.h>
int main(void)
{
long int l, m, n;
scanf("%ld", &n);
l = 1;
m = n;
while (n != 1) {
l = l+1;
if (n % 2 == 1)
n
= 3*n+1;
else
n
= n/2;
if (n > m)
m
= n;
}
printf("%ld %ld\n", l, m);
return 1;
}
Los valores de entrada y salida empleados para la evaluación
fueron los siguientes:
Entrada
Salida
1 1 1
2 2 2
5 6 16
10
7 16
22
16 52
50
25 88
100 26
100
222 71
9232
500 111
9232
1000 112 9232
2222 33 7504
22222 57 427192
222222 117 4054696
999999 259 22781248
1000000 153 1000000