[ Foro de C ]

Numeros sociables de 4 terminos

18-Apr-2024 00:06
Invitado (Excen)
1 Respuestas

Los números sociables representan la generalización del concepto de números amigos, en el cual la cadena cerrada de valores es mayor que 2.
O sea, que cada número es la suma de los divisores propios del número anterior, repitiéndose los valores al cabo de cierto orden.
Encontrar una cadena de números sociables de 4 términos. (no usar vectores)
#include <stdio.h>
long int SumaDivisores (long int );
int main (){
long int i,j,Termino1,Termino2,Termino3,Termino4,Sum,Encontrado=0;

for (i = 2 ; Encontrado < 1 ; i++){
Sum=i;
for (j = 0 ; j < 4 ; j++){
Sum = SumaDivisores (Sum) ;
if (j == 0)
Termino1 = Sum;
if (j == 1)
Termino2 = Sum;
if (j == 2)
Termino3 = Sum;
if (j == 3)
Termino4 = Sum;
}
if (Termino4 == i && Termino4 != Termino3 && Termino4 != Termino2){
Encontrado++;
printf ("\n\t La suma de los divisores de: %lu es %lu La suma de sus divisores es %lu , la suma de sus divisores es %lu y la suma de los divisores es %lu",i,Termino1,Termino2,Termino3,Termino4);}
}

}

long int SumaDivisores (long int N){
 long int SumDiv,Div;
    SumDiv=0;
  for (Div = 1; Div < N; Div++){
if (N % Div == 0)
SumDiv+= Div;
}
return SumDiv;
}

esto es lo que pude hacer pero no lo resuelve. alguien sabe como ?


18-Apr-2024 13:39
Nacho Cabanes (+84)

En un vistazo muy rápido, el "for" de tu suma de divisores no alcanza el número N, así que no se comportará correctamente.






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...