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 :
- Read the highest number as an input from the user.
- Initialize a variable to hold the sum of reciprocals.This will hold Brun’s constant at the end of program
- Initiate a loop starting from 2(since it is the lowest prime number) till the input number.
- 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.
- 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.