fork download
  1. #include <stdio.h>
  2.  
  3. int main(int argc, const char *argv[])
  4. {
  5.  
  6. int first_interval;
  7. int last_interval;
  8. int number;
  9. int divider;
  10. int sum = 0;
  11.  
  12. // Define um vetor para armazer os divisores:
  13. int dividers[10] = {0};
  14.  
  15. // Variável de controle para os divisores:
  16. int i = 0;
  17.  
  18. printf("Enter first and last interval`s number\n");
  19. scanf("%d %d", &first_interval, &last_interval);
  20.  
  21. for (number = first_interval; number >= first_interval && number <= last_interval; number++ )
  22. {
  23. for (divider = 1; divider < number; divider++)
  24. {
  25. if (number % divider == 0)
  26. {
  27. sum = sum + divider;
  28.  
  29. // Encontrou um divisor, então armazena-o:
  30. dividers[i++] = divider;
  31. }
  32. }
  33.  
  34. if (sum == number)
  35. {
  36. // Número é perfeito, então exibe os divisores:
  37. for (int j = 0; j < i-1; j++) printf("%d + ", dividers[j]);
  38. printf("%d = ", dividers[i-1]);
  39.  
  40. printf("%d PERFECT !!!\n", number);
  41. }
  42.  
  43. // Reinicia a variável de controle:
  44. i = 0;
  45. sum = 0;
  46. }
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 9432KB
stdin
1 500
stdout
Enter first and last interval`s number
1 + 2 + 3 = 6 PERFECT !!!
1 + 2 + 4 + 7 + 14 = 28 PERFECT !!!
1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496 PERFECT !!!