Advertisement
Indiegamesfan

Perfect Numbers

Nov 15th, 2014
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <iomanip>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7. bool perfect(int number);
  8.  
  9. int main()
  10. {
  11.     int k = 1, per = 0, list[200], seg, check, pos1 = 0, pos2 = 199;
  12.  
  13.     cout << "Perfect Numbers.\n";
  14.  
  15.     for (check = 1; check <= 10000; check++){
  16.         if (perfect(check)){
  17.             k = 1;
  18.             per = 0;
  19.             pos1 = 0;
  20.             pos2 = 199;
  21.             do{
  22.                 if (check%k == 0){
  23.                     list[pos1] = k;
  24.                     pos1++;
  25.                     list[pos2] = check / k;
  26.                     pos2--;
  27.                     per = per + (check / k) + k;
  28.                 }
  29.                 k++;
  30.             } while (k < (check / k));
  31.             seg = pos1;
  32.             pos2++;
  33.             cout << check << "=";
  34.             for (pos1 = 0; pos1 < seg; pos1++){
  35.                 cout << list[pos1] << "+";
  36.             }
  37.             for (pos2; pos2 < 199; pos2++){
  38.                 if (pos2 == 198){
  39.                     cout << list[pos2] << endl;
  40.                 }
  41.                 else{
  42.                     cout << list[pos2] << "+";
  43.                 }
  44.             }
  45.            
  46.         }
  47.        
  48.     }
  49.    
  50.     system("PAUSE");
  51.     return(0);
  52. }
  53.  
  54. bool perfect(int number){
  55.     int k = 1, j = 199, per = 0, line[200], seg;
  56.     do{
  57.         if (number%k == 0){
  58.             per = per + (number / k) + k;
  59.         }
  60.         j--;
  61.         k++;
  62.     } while (k < (number / k));
  63.     k--;
  64.     j++;
  65.     if ((per / 2) == number && number != 1){
  66.         return true;
  67.     }
  68.     else{
  69.         return false;
  70.     }
  71. }
  72.  
  73.  
  74.  
  75. /*
  76. Output
  77.  
  78.  
  79. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement