none
Suma de Multiplos RRS feed

  • Pregunta

  • Me gustarias saber como sumar los multiplo de 3 y 5.

    Osea los multiplos de 3 son 0,3,6,9,12 y los de 5 son 0,5,10.

    como puedo decirle suma 0+3+6+9+12+0+5+10=?

    Gracias.

    lunes, 31 de enero de 2011 19:09

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

     

    • Marcado como respuesta Ovegeton miércoles, 2 de febrero de 2011 17:38
    • Editado Ovegeton miércoles, 2 de febrero de 2011 17:41 Faltaba algo
    miércoles, 2 de febrero de 2011 17:37

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
    • Marcado como respuesta Ovegeton miércoles, 2 de febrero de 2011 17:08
    • Desmarcado como respuesta Ovegeton miércoles, 2 de febrero de 2011 17:37
    lunes, 31 de enero de 2011 19:17
  • 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:

    public IEnumerable<int> Multiplos3()
    {
      int i = 0;
      while (true)
      {
        yield return i++ * 3;
      }
    }
    
    Una vez tengas las dos enumeraciones, coges los elementos que quieras con Take y los sumas con Sum como ha escrito Leandro.

     

     


    Vicente Cartas Espinel - MVP XNA/DirectX

    Twitter - VicenteCartas

    Blog about C# and XNA Development

    Blog about Role Playing Games

    lunes, 31 de enero de 2011 19:30
  • 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

     

    • Marcado como respuesta Ovegeton miércoles, 2 de febrero de 2011 17:38
    • Editado Ovegeton miércoles, 2 de febrero de 2011 17:41 Faltaba algo
    miércoles, 2 de febrero de 2011 17:37
  • 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

    Twitter - VicenteCartas

    Blog about C# and XNA Development

    Blog about Role Playing Games

    miércoles, 2 de febrero de 2011 19:11