Problem:
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?
Solution:
76576500
Code:
The solution may include methods that will be found here: Library.java .
public interface EulerSolution{ public String run(); }
/* * Solution to Project Euler problem 12 * By Nayuki Minase * * http://nayuki.eigenstate.org/page/project-euler-solutions * https://github.com/nayuki/Project-Euler-solutions */ public final class p012 implements EulerSolution { public static void main(String[] args) { System.out.println(new p012().run()); } public String run() { int num = 0; for (int i = 1; ; i++) { num += i; // num is triangle number i if (countDivisors(num) > 500) return Integer.toString(num); } } private static int countDivisors(int n) { int count = 0; int end = Library.sqrt(n); for (int i = 1; i < end; i++) { if (n % i == 0) count += 2; } if (end * end == n) // Perfect square count++; return count; } }
No comments :
Post a Comment