Principales respuestas
Suma de Multiplos

Pregunta
-
Respuestas
-
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string [] args) { //Crear una variable para acumular la suma int sum = 0; //En esta caso el for es el acumulador para saber hasta donde llegara la suma for (int i = 1; i < 1000; i++) { /* * Este if significa si i/3=0 continua * si i divido entre 3 es igual a 0 continua */ if (i % 3 == 0) { //Suma es igual al valor actual de suma mas el valor actual de 1 sum = sum + i; } /* * De lo comtrario */ else { /* * Este if significa si i/5=0 continua * si i divido entre 5 es igual a 0 continua */ if (i % 5 == 0) { sum = sum + i; } } } //Muestrame el Valor de Suma Console.WriteLine(sum); Console.ReadLine(); } } }
Esta es una foma mas Practica y no esta sujeta a un minimo ni masimo.
Y de esta forma solo hay q sustituir los multiplos del ejemplo por otros si lo decea.
O el masimo hasta donde se quiere sumar
Todas las respuestas
-
hola
estas usando .net 3.5 ?
podrias usar
List<int> multiplo3 = new List<int>() { 3, 6, 9, 12 };
List<int> multiplo5 = new List<int>() { 5, 10 };
int total = multiplo3.Sum() + multiplo5.Sum();tambine podrias ser
List<int> multiplo3 = new List<int>() { 3, 6, 9, 12 };
List<int> multiplo5 = new List<int>() { 5, 10 };
IEnumerable<int> union = multiplo3.Union(multiplo5);
int total = union.Sum();aunque no creo que sea esto lo que buscas
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Primero te tienes que hacer dos funciones que te devuelvan los múltiplos de 3 y de 5. Desgraciadamente esas listas son infinitas, pero lo puedes solucionar con yield:
Una vez tengas las dos enumeraciones, coges los elementos que quieras con Take y los sumas con Sum como ha escrito Leandro.public IEnumerable<int> Multiplos3() { int i = 0; while (true) { yield return i++ * 3; } }
Vicente Cartas Espinel - MVP XNA/DirectX- Propuesto como respuesta eduard tomàsMVP, Moderator martes, 1 de febrero de 2011 8:44
-
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string [] args) { //Crear una variable para acumular la suma int sum = 0; //En esta caso el for es el acumulador para saber hasta donde llegara la suma for (int i = 1; i < 1000; i++) { /* * Este if significa si i/3=0 continua * si i divido entre 3 es igual a 0 continua */ if (i % 3 == 0) { //Suma es igual al valor actual de suma mas el valor actual de 1 sum = sum + i; } /* * De lo comtrario */ else { /* * Este if significa si i/5=0 continua * si i divido entre 5 es igual a 0 continua */ if (i % 5 == 0) { sum = sum + i; } } } //Muestrame el Valor de Suma Console.WriteLine(sum); Console.ReadLine(); } } }
Esta es una foma mas Practica y no esta sujeta a un minimo ni masimo.
Y de esta forma solo hay q sustituir los multiplos del ejemplo por otros si lo decea.
O el masimo hasta donde se quiere sumar
-
Esto de práctica no tienen nada... Haces un montón de módulos de un montón de números que no son ni múltiplos de tres ni múltiplos de cinco. La solución del yield es mucho mejor (le puedes pasar si quieres a partir de donde quieres empezar como parámetro y listo si no quieres desde el primero).
Vicente Cartas Espinel - MVP XNA/DirectX