1. package pe37test;
  2.  
  3. /**
  4.  *
  5.  * @author Caleb
  6.  */
  7. public class Main {
  8.  
  9. static final int clim = 1000000;
  10. static boolean nums[];
  11.  
  12. public static void main(String[] args) {
  13.  
  14. long t1 = System.nanoTime();
  15. int sum=0;
  16.  
  17. findPrimes();
  18.  
  19. long t2 = System.nanoTime();
  20. System.out.println("Generates primes in: " + ((t2 - t1) * 1e-6) + " milliseconds");
  21.  
  22. for (int i = 0; i < clim; i++) {
  23. if (nums[i]) {
  24. if (truncateCheck(i)) {
  25. System.out.println(i);
  26. sum += i;
  27. }
  28. }
  29. }
  30. System.out.println("Sum:"+sum);
  31. t2 = System.nanoTime();
  32. System.out.println("Execution time: " + ((t2 - t1) * 1e-6) + " milliseconds");
  33. }
  34.  
  35. public static boolean truncateCheck(int number) {
  36. for (int i = 1; i < String.valueOf(number).length(); i++) {
  37. if (nums[Integer.parseInt(String.valueOf(number).substring(i))]==false) {
  38. return false;
  39. }
  40. if (nums[Integer.parseInt(String.valueOf(number).substring(0, i))] == false) {
  41. return false;
  42. }
  43. }
  44. return true;
  45. }
  46.  
  47. public static void findPrimes() {
  48. nums = new boolean[clim + 1];
  49. for (int i = 2; i <= clim; i++) {
  50. nums[i] = true;
  51. }
  52. for (int i = 2; i * i <= clim; i++) {
  53. if (nums[i]) {
  54. for (int j = i; i * j <= clim; j++) {
  55. nums[i * j] = false;
  56. }
  57. }
  58. }
  59. }
  60. }
  61.