elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] Suma divisores de un número
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Suma divisores de un número  (Leído 26,500 veces)
RON06

Desconectado Desconectado

Mensajes: 32


Aprendiz


Ver Perfil
[Solucionado] Suma divisores de un número
« en: 11 Noviembre 2010, 21:55 pm »

Hola a tod@s!

Como dice el tema quiero hacer un programa en C++ que calcule la suma  de los divisores de un número.

Tengo el siguiente código:
Código:
#include <iostream>

using namespace std;

int main()
{
    //Declaración variables
    int n; //Entrada
    int s; // Salida
    int i; //Auxiliar

    cout << "INTRODUZCA UN NUMERO:" << endl;
    cin >> n;

    s=1; // 1 es divisor siempre

    for (i=2;i<=(n/2);i++) {
        if (n%i==0) {
            s=s+i;
        }
    }
    s=s+n; //Sumamos el numero inicial que es divisor de él mismo

    cout << "LA SUMA DE LOS DIVISORES DE " << n << " ES: " << s << endl;

    return 0;
}

El problema que tengo es que por números como el 6, 20 y otros funciona.
Pero por ejemplo por el 220 no.
1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284

En mi programa la suma de divisores de 220 sale que es 504.

Alguien tiene idea de que puede fallar y cómo solucionarlo?

Gracias  :D


« Última modificación: 11 Noviembre 2010, 22:42 pm por RON06 » En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: [Ayuda] Suma divisores de un número
« Respuesta #1 en: 11 Noviembre 2010, 22:21 pm »

En algún momento has cometido un error de planteamiento respecto al problema.



Aqui tienes una muestra de como ejecuta tu código (con una pequeña variación para mostrar cada divisor).

Como podrás observar, los números imprimidos por pantalla coinciden con tu desarrollo, PERO en el programa hay algo más:

Código
  1. s=s+n; //Sumamos el numero inicial que es divisor de él mismo

Así que:
a) no has contemplado la propia suma de si mismo en tus cálculos a mano
o bien
b) esta suma sobra en el programa.
Según sea el planteamiento del problema, es uno u otro fallo.


En línea

RON06

Desconectado Desconectado

Mensajes: 32


Aprendiz


Ver Perfil
Re: [Solucionado] Suma divisores de un número
« Respuesta #2 en: 11 Noviembre 2010, 22:47 pm »

Gracias Akai  ;D

Tenías razón, el error no estaba en el código, sinó en mis cálculos a mano.
Me olvidé de sumar el mismo número.
De esta manera si sale lo mismo.

1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 + 220= 504

 :D

PD: Por cierto, gracias por la línea de código añadida, así veo los otros divisores  :rolleyes:
En línea

ShadowStorm

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: [Ayuda] Suma divisores de un número
« Respuesta #3 en: 11 Noviembre 2010, 23:05 pm »

En algún momento has cometido un error de planteamiento respecto al problema.



Aqui tienes una muestra de como ejecuta tu código (con una pequeña variación para mostrar cada divisor).

Como podrás observar, los números imprimidos por pantalla coinciden con tu desarrollo, PERO en el programa hay algo más:

Código
  1. s=s+n; //Sumamos el numero inicial que es divisor de él mismo

Así que:
a) no has contemplado la propia suma de si mismo en tus cálculos a mano
o bien
b) esta suma sobra en el programa.
Según sea el planteamiento del problema, es uno u otro fallo.

PD: Por cierto, gracias por la línea de código añadida, así veo los otros divisores  :rolleyes:

Faltaría imprimir el primer divisor que es 1.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int main()
  5. {
  6.    //Declaración variables
  7.    int n; //Entrada
  8.    int s; // Salida
  9.    int i; //Auxiliar
  10.  
  11.    cout << "INTRODUZCA UN NUMERO:" << endl;
  12.    cin >> n;
  13.  
  14.    s=0; // Almacena la suma de los divisores
  15.  
  16.    for (i=1;i<=(n/2);i++) { //1 es divisor siempre
  17.        if (n%i==0) {
  18. cout<<i<<endl; //Imprimimos los divisores
  19.            s=s+i;
  20.        }
  21.    }
  22.   //s=s+n; //Sumamos el numero inicial que es divisor de él mismo
  23.  
  24.    cout << "LA SUMA DE LOS DIVISORES DE " << n << " ES: " << s << endl;
  25.  
  26.   cout<<endl<<endl;
  27.   cout<< "Presiona ENTER para salir";
  28.   cin.sync();
  29.   cin.get();
  30.  
  31.    return 0;
  32. }
En línea

RON06

Desconectado Desconectado

Mensajes: 32


Aprendiz


Ver Perfil
Re: [Ayuda] Suma divisores de un número
« Respuesta #4 en: 12 Noviembre 2010, 00:20 am »

Gracias ShadowStorm para mejorar/retocar aún más el código :D
« Última modificación: 12 Noviembre 2010, 00:29 am por Littlehorse » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa que devuelve la suma de todos los divisores de un número excepto n
Programación C/C++
ERIK546 2 4,056 Último mensaje 29 Junio 2012, 05:54 am
por ERIK546
[solucionado] Pregunta sobre numero en c++
Programación C/C++
elkiy 1 1,372 Último mensaje 28 Mayo 2013, 21:18 pm
por elkiy
RETO divisores de 15000 [JAVA]
Java
trolleoatodos 3 1,640 Último mensaje 3 Septiembre 2013, 17:06 pm
por 1mpuls0
(Solucionado) Suma de Arrays
Programación C/C++
dennis094 0 746 Último mensaje 19 Enero 2014, 19:11 pm
por dennis094
[?]numero de 1 y 0 en un vector [solucionado]
Programación C/C++
macshivi 2 1,114 Último mensaje 27 Octubre 2016, 21:50 pm
por macshivi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines