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.
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 post was useful. Keep visiting for more such stuff !!!