本文共 2932 字,大约阅读时间需要 9 分钟。
1.package com.shui.mu.yao.io.algorithm; 2. 3.import java.util.ArrayList; 4.import java.util.List; 5. 6.public class Problem12 { 7. 8. public static void main(String[] args) { 9. long start = System.currentTimeMillis(); 10. int x = 500; 11. int count = 1; 12. while ((x /= 2) != 0) { 13. count++; 14. } 15. Listseed = new ArrayList (); 16. seed.add(2); 17. int factor = 2; 18. while (seed.size() < 500) { 19. boolean isPrime = true; 20. for (int s : seed) { 21. if (factor < s) 22. break; 23. if (factor % s == 0) 24. isPrime = false; 25. } 26. if (isPrime) 27. seed.add(factor); 28. factor++; 29. } 30. 31. int N = (int) Math.pow(2, count); 32. int sum = 0; 33. List list = new ArrayList (); 34. while (true) { 35. N++; 36. sum = (1 + N) / 2 * N; 37. list.clear(); 38. for (int s : seed) { 39. if (sum < s) 40. break; 41. int count_ = 0; 42. int temp = sum; 43. while (temp % s == 0) { 44. count_++; 45. temp = temp / s; 46. } 47. if (count_ != 0) { 48. list.add(new Node(s, count_)); 49. } 50. 51. } 52. int result = 1; 53. for (Node node : list) { 54. result = result * (node.getY() + 1); 55. } 56. if (result > 500) { 57. int re=1; 58. for (Node node : list) { 59. System.out.println("factor:" + node.getX() + "\t" 60. + "count:" + node.getX()); 61. re*=Math.pow(node.getX(), node.getY()); 62. } 63. if(re==sum) 64. System.out.println("this is a true result"); 65. System.out.println("sum:" + sum); 66. System.out.println("N:" + N); 67. break; 68. } 69. 70. } 71. 72. long end = System.currentTimeMillis(); 73. System.out.println("time:" + (end - start) + "ms"); 74. 75. } 76. 77.} 78. 79.class Node { 80. private int x; 81. 82. public int getX() { 83. return x; 84. } 85. 86. public void setX(int x) { 87. this.x = x; 88. } 89. 90. public int getY() { 91. return y; 92. } 93. 94. public void setY(int y) { 95. this.y = y; 96. } 97. 98. private int y; 99. 100. Node(int x, int y) { 101. this.x = x; 102. this.y = y; 103. } 104.}
转载地址:http://yeell.baihongyu.com/