Si una lista de todos los números naturales por debajo de 10, que son múltiplos de 3 o 5, obtenemos 3, 5, 6 y 9. La suma de estos múltiplos es 23.
Encuentra la suma de todos los múltiplos de 3 o 5 por debajo de 1,000.
Solución a partir de un ciclo for:
1.- Se inicia un contador en 1 con un límite hasta 1000.
2.- Se crea una condición, en donde el contador se dividirá entre 3 o(||) 5 y si el residuo (%) es igual a cero, se procede a la operación
3.- La operación consiste en una suma, donde la variable de contador se le sumará el valor actual(variable suma) dando cómo sintaxis normal: suma=suma+contador pero se han usado los operadores de asignación compuestos para reducir el código dando como resultado suma+=contador.
Operadores de Asignación Compuestos:
OPERADOR | EQUIVALENCIA |
a += b | a = a + b |
a -= b | a = a - b |
a *= b | a = a * b |
a /= b | a = a / b |
Código JAVA:
public class ProblemaUno {
public static void main (String[] args){
int suma=0;
for(int contador = 1; contador<1000; contador++) {
if(contador%3==0 || contador%5==0){
suma+=contador;
}
}
System.out.println("Sumatoria total: " + suma);
}
}
Código RUBY:
Usando el método upto se puede llegar al mismo resultado, de igual manera, podría hacerse con un each usando rangos, e igual que en JAVA con un for:
suma = 0
1.upto(1000) do |numero|
if numero%3 == 0 or numero%5 == 0
suma += numero
end
end
puts "La suma total es: #{suma}"
(Aunque la filosofía en Ruby sería usarlo como un objeto, pero ahora no hablamos de un tutorial de Ruby para crear nuestra clase, definir el método, crear el objeto, etc etc...)
Problema 2:
Cada nuevo término en la serie de Fibonacci se genera por la suma de los dos términos anteriores. Al comenzar con 1 y 2, los primeros 10 términos serán los siguientes:
1,2,3,5,8,13,21,34,55,89
Al considerar los términos de la sucesión de Fibonacci cuyos valores no superan los cuatro millones, hallar la suma de los términos pares.
Solución a partir de un ciclo while:
1.- Lo primero que podría considerarse para llegar a la solución, sería encontrar el algoritmo para recrear la serie de Fibonacci, para esto, se crearían 2 variables, una iniciando en 0(anterior) y otra en 1(fibo), las cuales nos ayudarían a definir la posición actual de la serie y la posición anterior.
2.- Sabemos que el rango a cubrir, debe ser menor a 4,000,000 por lo cual, se usará un while para crear el ciclo que se irá repitiendo hasta cumplir su condición en que la variable fibo no exceda el valor antes citado.
3.- Dentro del ciclo, arrancan 2 operaciones para ir alterando a al variable fibo, la primera calcularía la posición anterior, usando el valor actual de fibo para restar el valor actual de la variable anterior. Después entraría una nueva, donde la variable fibo se le añadiría el valor de la variable anterior, y esto nos generaría la serie de Fibonacci.
4.- Se incluye una condición similar al problema anterior, cambiando ahora los valores de la división a 2 para separar solo los términos pares, y si la condición se cumple, genera la operación de calcular la variable suma, a partir del valor actual de la variable fibo y de variable suma (que podría considerarse como el valor que tenía la serie, en la posición anterior)
Código JAVA:
public class ProblemaDos {
public static void main (String[] args){
int anterior =0;
int fibo=1;
int suma = 0;
while(fibo<4000000) {
anterior = fibo-anterior;
fibo += anterior;
if(fibo%2==0){
suma += fibo;
}
}
System.out.println("La suma es: " +suma);
}
}
Código RUBY:
fibo = 1
anterior = 0
suma = 0
while fibo < 4000000
if fibo%2 == 0
suma += fibo
end
anterior = fibo - anterior
fibo += anterior
end
puts "La suma total es: #{suma}"