[ 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.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)