scosant
12/17/2012 - 11:52 AM

projecteuler012 - highly divisible triangular number

projecteuler012 - highly divisible triangular number

/** 
 *
 * projecteuler012 - highly divisible triangular number
 *
 * The sequence of triangle numbers is generated by adding the natural
 * numbers. So the 7^(th) 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.  What is the value of the first triangle number to have
 * over five hundred divisors?
 */

#include <iostream>

int main(int argc, char *argv[])
{
	unsigned int iteration = 1;
	unsigned int triangle_number = 0;
	unsigned int divisor_count = 0;
	unsigned int current_max_divisor_count = 0;
	while (true) {
		triangle_number += iteration;
		divisor_count = 0;
		for (int x = 2; x <= triangle_number / 2; x++) {
			if (triangle_number % x == 0) {
				divisor_count++;
			}
		}
		if (divisor_count > current_max_divisor_count) {
			current_max_divisor_count = divisor_count;
			std::cout << triangle_number << " has " << divisor_count
					  << " divisors." << std::endl;
		}
		iteration++;
	}
	return 0;
}