(C++) GetSumProperDivisors

February 24, 2017 · View on GitHub

 

 

 

 

 

(C++) GetSumProperDivisors

 

GetSumProperDivisors is a math code snippet to determine if a number is perfect.

 


#include <cassert> //--------------------------------------------------------------------------- ///GetSumProperDivisors returns the sum of all proper divisors of x ///From http://www.richelbilderbeek.nl/CppGetSumProperDivisors.htm int GetSumProperDivisors(const int x) {   assert(x > 0);   int sum = 0;   const int j = (x / 2) + 1;   for (int i=1; i!=j; ++i)   {     //Is i a proper divisor of x?     if (x % i == 0)     {       sum+=i;     }   }   return sum; } //--------------------------------------------------------------------------- ///IsPerfectNumber determines if x is a perfect number ///From http://www.richelbilderbeek.nl/CppIsPerfectNumber.htm bool IsPerfectNumber(const int x) {   return (GetSumProperDivisors(x) == x); } //--------------------------------------------------------------------------- int main() {   assert(!IsPerfectNumber( 1));   assert(!IsPerfectNumber( 2));   assert(!IsPerfectNumber( 3));   assert(!IsPerfectNumber( 4));   assert(!IsPerfectNumber( 5));   assert( IsPerfectNumber( 6));   assert(!IsPerfectNumber( 7));   assert(!IsPerfectNumber( 8));   assert(!IsPerfectNumber( 9));   assert(!IsPerfectNumber(10));   assert(!IsPerfectNumber(11));   assert(!IsPerfectNumber(12));   assert(!IsPerfectNumber(13));   assert(!IsPerfectNumber(14));   assert(!IsPerfectNumber(15));   assert(!IsPerfectNumber(16));   assert(!IsPerfectNumber(17));   assert(!IsPerfectNumber(18));   assert(!IsPerfectNumber(19));   assert(!IsPerfectNumber(20));   assert(!IsPerfectNumber(21));   assert(!IsPerfectNumber(22));   assert(!IsPerfectNumber(23));   assert(!IsPerfectNumber(24));   assert(!IsPerfectNumber(25));   assert(!IsPerfectNumber(26));   assert(!IsPerfectNumber(27));   assert( IsPerfectNumber(28));   assert(!IsPerfectNumber(29));   assert(!IsPerfectNumber(30));   assert(!IsPerfectNumber(31));   assert(!IsPerfectNumber(32));   assert(!IsPerfectNumber(33));   assert(!IsPerfectNumber(34));   assert(!IsPerfectNumber(35));   assert(!IsPerfectNumber(36)); }