Liczy zaprzyjaźnione [C]

0

Witam! Mam do napisania program który wypisze liczby doskonałe i zaprzyjaźnione w przedziale do 1000. Z liczbami doskonałymi sobie poradziłem, ale z zaprzyjaźnionymi już pojawił się problem (operuje na Linux`ie), coś źle musiałem napisać i program nie chce nic wypisać. Programowania dopiero się uczę (język C).. Może mnie naprowadzicie co mógłbym poprawić? :)

#include <stdio.h>
int main ()
{
int SumaN=0;
int SumaM=0;
int N=0;
int M=0;
int n=0;
int m=0;

for (N=1; N<=1000; N++) //pętla wprowadza liczby o 1 większe od poprzedniej (n)
{
sumaN=0;
  for (n=1; n<=N/2; n++) //pętla liczy dzielniki liczby N i dodaje sumuje je
   {
   if (N%n==0)
    sumaN+=n;
for (M=N+1; m<=M/2; m++)
  {
  if (M%m==0)
   sumaM+=m;
if (sumaN==M && sumaM==N)
  printf ("Liczby zaprzyjaźnione to_%d_i_%d\n" , M , N);
}
}
}
return 0;
}
2

Jak sformatujesz po ludzku to natychmiast zauważysz błąd.

0

Jednym błędem to niezerowanie zmiennej sumaM?

1
for (M = N + 1; m <= M / 2; m++) 
{
    if (M % m == 0)
        sumaM += m;
    if (sumaN == M && sumaM == N)
        printf("Liczby zaprzyjaźnione to_%d_i_%d\n", M, N);
}

Wyjaśnij słowami, co próbujesz tutaj zrobić. W szczególności dlaczego M = N + 1 i dlaczego wypisujesz, że liczby są zaprzyjaźnione gdy jeszcze nie skończyłeś wyliczać sum. Zauważ, że małe m nie jest zerowane przed wykonaniem pętli.

0

Udało mi się doprowadzić to do końca rano;p dziękuję za odpowiedzi!
(kod przesłać?)

1 użytkowników online, w tym zalogowanych: 0, gości: 1