Finding the first triangle number with over five hundred divisors Project Euler Problem #12:


  The sequence of triangle numbers is generated by adding the natural
  numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7
  = 28. The first ten terms would be:
  
  1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
  
  Let us list the factors of the first seven triangle numbers:
  
  1: 1
    3: 1,3
    6: 1,2,3,6
   10: 1,2,5,10
   15: 1,3,5,15
   21: 1,3,7,21
   28: 1,2,4,7,14,28 
  
  We can see that 28 is the first triangle number to have over five
  divisors.




The code runs correctly, but I want to know if I can make any improvements to the code.

#include &lt;iostream&gt;
#include &lt;limits&gt;
#include &lt;cmath&gt;
int highlyDivisibleTriangularNum();

int main() {
std::cout &lt;&lt;highlyDivisibleTriangularNum() &lt;&lt; std::endl;
return 0;
}

int highlyDivisibleTriangularNum()
{
//The number to be added to all the previous numbers
int i = 1;
//The number that adds all the previous numbers
int overallAdd = 0;
//Max number
int max = std::numeric_limits&lt;int&gt;::max();
for(int counter = 0; counter &lt; max; counter++)
{
    int total = 0;
    int sum = overallAdd + i;
    i++;
    overallAdd = sum;

    int sqrtSum = (int)sqrt(sum);
    for(int c = 1; c &lt;=sqrtSum;c++)
    {
        if(sum%c == 0)
        {
            total += 2;
        }
        if(total &gt; 500)
        {
            return sum;
        }
    }

}
return 0;
}
Code


total += 2 is a bug. In case sum is a perfect square, and c happens to be its root, total shall be incremented by 1.
Using floating point (sqrt) in a number theoretical problem is dubious at best.
You don't need overallAdd. sum += i; suffices.
Naming looks arbitrary. The sum is a triangular number, total is a sum of divisors, so call them appropriately. Single-letter identifiers, like c shall be avoided.
Add your operators some breathing space.
Inner loop computes the number of divisors. Better factor it into a separate function.

Algorithm is brute force, which is never good, especially for Project Euler problems. This problem was discussed here many times. See this shameless self-plug for example.