humanstory - 1 year ago 84

C# Question

I'm having trouble with Project Euler's problem 12. My code is correctly generating the series, as far as I can tell, and it gets the correct solution to the test problem. I don't believe that

`long`

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.

What is the value of the first

triangle number to have over five

hundred divisors?

`class Program`

{

static long lastTriangle = 1;

static void Main(string[] args)

{

long x = 1;

do

{

x = nextTriangle(x);

Console.WriteLine(x);

} while (numDivisors(x) < 500);

Console.WriteLine(x);

Console.ReadLine();

}

static long nextTriangle(long arg)

{

lastTriangle += 1;

long toReturn = lastTriangle + arg;

return toReturn;

}

static long numDivisors(long arg)

{

long count = 0;

long lastDivisor = 0;

Boolean atHalfWay = false;

for (long x = 1; x <= arg && !atHalfWay; x++)

{

if (arg % x == 0 && x != lastDivisor)

{

count++;

lastDivisor = arg / x;

}

else if (x == lastDivisor)

{

atHalfWay = true;

}

}

return count*2;

}

}