Advertisement
bg_pa4o

TwoPrimes

Oct 30th, 2014
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.20 KB | None | 0 0
  1. public class TwoPrimes {
  2.  
  3.     public static void main(String[] args) {
  4.         int N = 10000000;
  5.  
  6.         boolean[] isprime = new boolean[N];
  7.  
  8.         for (int i = 2; i < N; i++)
  9.             isprime[i] = true;
  10.  
  11.         // determine primes < N using Sieve of Eratosthenes
  12.         for (int i = 2; i * i < N; i++) {
  13.             if (isprime[i]) {
  14.                 for (int j = i; i * j < N; j++)
  15.                     isprime[i * j] = false;
  16.             }
  17.         }
  18.  
  19.         // count primes
  20.         int primes = 0;
  21.         for (int i = 2; i < N; i++)
  22.             if (isprime[i])
  23.                 primes++;
  24.  
  25.         // store primes in list
  26.         int[] list = new int[primes];
  27.         int n = 0;
  28.         for (int i = 0; i < N; i++)
  29.             if (isprime[i])
  30.                 list[n++] = i;
  31.  
  32.         // check if N can be expressed as sum of two primes
  33.  
  34.         for (int i = 4; i <= 10000000; i += 2) {
  35.             int currNum = i;
  36.             int left = 0, right = list.length - 1;
  37.             while (left <= right && right > 0) {
  38.                 if (list[left] + list[right] == currNum)
  39.                     break;
  40.                 else if (list[left] + list[right] < currNum)
  41.                     left++;
  42.                 else
  43.                     right--;
  44.             }
  45.             if (list[left] + list[right] == currNum)
  46.                 System.out.println(currNum + " = " + list[left] + " + "
  47.                         + list[right]);
  48.             else
  49.                 System.out.println(currNum
  50.                         + " not expressible as sum of two primes");
  51.         }
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement