What is Brun’s constant

Viggo Brun in 1919 devised a theorem which states that the sum of reciprocals of twin prime numbers reaches towards a value which is called Brun’s constant.
Twin prime numbers are prime numbers which differ by 2 such as 3 and 5, 5 and 7, 11 and 13 etc. Mathematically, above theorem can be expressed as (1/2 + 1/3 + 15 +1/7 + ……) = Brun’s Constant.
A number which is divisible either by 1 or by itself is called a prime number.

Calculating Brun’s constant in java

Brun’s constant involves adding up twin prime numbers and since such numbers have no upper limit, we need to place a limit on the highest prime number that will be considered when calculating Brun’s constant.

Logic

Program logic involves following steps :

  1. Read the highest number as an input from the user.
  2. Initialize a variable to hold the sum of reciprocals.This will hold Brun’s constant at the end of program
  3. Initiate a loop starting from 2(since it is the lowest prime number) till the input number.
  4. In each iteration of the loop check whether the current number and (number + 2) are both prime or not. If they are both prime then sum up their reciprocals and them to the variable which was initialized on Step 2.
  5. Print the value of the variable in Step 2.

Java program written on the above algorithm is as given below.

import java.util.Scanner;

public class BrunsConstantCalculator {
  /**
    * Main method
  */
  public static void main(String[] args) {
    // initialize reader
    Scanner reader = new Scanner(System.in);
    System.out.print("Enter a number: ");
    // read limit number
    int number = reader.nextInt();
    double result = calulateBrunsConstant(number);
    System.out.println("Brun's Constant of prime numbers till " + number +
                        " = " + result);
    // close reader
    reader.close();
  }

  /**
  * Check if the number is prime
  * 
  * @param numberToCheck
  * @return
  */
  public static boolean isPrime(int numberToCheck) {
    boolean isPrime = true;
    for (int i = 2; i < numberToCheck; i++) {
      // if number is divisible by any other number
      if (numberToCheck % i == 0) {
        // it is not prime
        isPrime = false;
        break;
      }
    }
    return isPrime;
  }

  /**
    * Calculates Brun's constant
    * @param number
    * @return
    */
  public static double calulateBrunsConstant(int number) {
    System.out.println("Prime numbers(twin) used in calculation are :");
    System.out.println("---------------------------------------------");
    // initialize variable to hold sum
    double sum = 0.0;
    // loop till the number
    for (int i = 2; i < number; i++) {
      int firstNumber = i;
      int secondNumber = i + 2;
      // check if both numbers are prime
      if (isPrime(firstNumber) && isPrime(secondNumber)) {
        System.out.println(firstNumber + " " + secondNumber);
	// calculate sum of reciprocals and add them to total
	sum = sum + (double) 1 / firstNumber + (double) 1 / secondNumber;
      }
    }
    return sum;
  }
}

Output

Above program produces following output.

Enter a number: 23
Prime numbers(twin) used in calculation are :
———————————————
3 5
5 7
11 13
17 19
Brun’s Constant of prime numbers till 23 = 1.1554777523817772

Hope this article was useful.

Leave a Reply