2010 Ejercicio 1: Sumar los enteros menores de 1000 que sean múltiplos de 3 ó 5
De Software Libre para la Enseñanza y el Aprendizaje de las Matemáticas (2010-11)
Sumario
Enunciado
Sumar los enteros menores de 1000 que sean múltiplos de 3 ó 5.
(i%1) sumamultiplos: 0$ for i: 1 thru 999 do ( L: makelist(divide (i,3) K: makelist (divide (i,5)) if (second (L) = 0) or (second (K) =0) then ( sumamultiplos: sumamultiplos + i))$ print (“La suma de los enteros menores de 1000 que sean múltiplos de 3 o 5 es: “, sumamultiplos)$;
Solución 1 (en Groovy)
La solución que propongo está escrita en lenguaje Groovy. Este es un lenguaje muy reciente con licencia libre y derivado del Java, por tanto entra dentro de la categoría de lenguajes orientados a objetos. En la página http://groovyconsole.appspot.com/ podemos introducir el código y ejecutarlo pulsando "Execute Script".
Quien desee aprender más acerca de dicho lenguaje puede visitar la página http://groovy.codehaus.org/. Actualmente me gano la vida programando en dicho lenguaje ;)
Solución: 233168
def suma = 0 for (i in 1..999) { if (i%3 == 0 || i%5 == 0) { suma = suma + i } } println(suma)
Solución 2 (en PHP)
Otra solución alternativa es usar un lenguaje de programación interpretado como PHP. Aunque originalmente, fue concebido para la creación de páginas web dinámicas también nos permite resolver este tipo de problemas. Para probar la solución sólo tendremos que realizar lo siguiente:
- Tener un servidor que interprete PHP, como por ejemplo Apache. - Crear un archivo .php, por ejemplo, sol.php con el siguiente código:
<?php $suma = 0; for ($i=1; $i<1000; $i++) { if ($i%3 == 0 || $i%5 == 0) $suma = $suma + $i; } echo "La suma de los enteros menores de 1000 que sean múltiplos de 3 ó 5 es: ".$suma; ?>
- Guardar el archivo en la carpeta de documentos del servidor. - Acceder a la url del archivo. Si estamos en local y por ejemplo hemos guardado nuestro archivo en la carpeta pruebas, sólo tendremos que poner la siguiente ruta en la barra de dirección del navegador: http://localhost/pruebas/sol.php
Solución 3 (utilizando wxMaxima 0.8.4)
Otra solución alternativa es usar un lenguaje de cálculo simbólico Máxima.
(i%1) suma : 0$ for i:1 thru 999 do ( if( mod(i,3)=0 or mod(i,5)=0 ) then ( suma : suma + i))$ print ("La suma es: ", suma)$; (o%1) La suma es: 233168
Solución 4 (utilizando wxMaxima 0.8.4)
suma3 : (((999/3) - 1) / 2 ) * (999+6) + 3; suma5 : (((995/5) - 1) / 2 ) * (995+10) + 5; suma15 : ((990/15) / 2 ) * (990+15); suma : suma3 + suma5 - suma15;
Solución 5 (utilizando wxMaxima 0.8.4)
suma5 : (199+1)*199*5/2; suma3 : (333+1)*333*3/2; suma15 : (66+1)*66*15/2; print ("La suma es: ", suma5 + suma3 - suma15)$;