GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Java/ProjectEuler/Problem12.java at master · JavaInCloud/Java Expand file tree/ Copy pathProblem12.javaMore file actions 54 lines (47 loc) · 1.86 KB / Copy pathProblem12.javaFile metadata and controls54 lines (47 loc) · 1.86 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 package ProjectEuler; /** * 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: * * <p>1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... * * <p>Let us list the factors of the first seven triangle numbers: * * <p>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. * * <p>What is the value of the first triangle number to have over five hundred divisors? * * <p>link: https://projecteuler.net/problem=12 */ public class Problem12 { /** Driver Code */ public static void main(String[] args) { assert solution1(500) == 76576500; } /* returns the nth triangle number; that is, the sum of all the natural numbers less than, or equal to, n */ public static int triangleNumber(int n) { int sum = 0; for (int i = 0; i <= n; i++) sum += i; return sum; } public static int solution1(int number) { int j = 0; // j represents the jth triangle number int n = 0; // n represents the triangle number corresponding to j int numberOfDivisors = 0; // number of divisors for triangle number n while (numberOfDivisors <= number) { // resets numberOfDivisors because it's now checking a new triangle number // and also sets n to be the next triangle number numberOfDivisors = 0; j++; n = triangleNumber(j); // for every number from 1 to the square root of this triangle number, // count the number of divisors for (int i = 1; i <= Math.sqrt(n); i++) if (n % i == 0) numberOfDivisors++; // 1 to the square root of the number holds exactly half of the divisors // so multiply it by 2 to include the other corresponding half numberOfDivisors *= 2; } return n; } } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |