How To Check Whether a Number is a Goldbach Number or Not in Java?


A number is said to be a Goldbach number, if the number can be expressed as the addition of two odd prime number pairs.

If we follow the above condition, then we can find that every even number larger than 4 is a Goldbach number because it must have any pair of odd prime number pairs. But the odd numbers are not satisfying because we know the addition of two numbers can never be an odd number.

In this article, we will see how to check if a number is a Goldbach number by using Java programming language.

To show you some instances

Instance-1

Input number is 50.

Let’s check it by using the logic of the Goldbach number.

Finding the odd prime number pairs, we get:

(3 , 47)
(7 , 43)
(13 , 37)
(19 , 31)

As we notice here we got some pairs of odd prime numbers whose addition value is equal to the 50.

Hence, 50 is a Goldbach number.

Instance-2

Input number is 47.

Let’s check it by using the logic of the Goldbach number.

Finding the odd prime number pairs, we get− no pair available

As we notice here we didn’t get any pairs of odd prime numbers whose addition value is equal to the 47.

Hence, 47 is not a Goldbach number.

Some other examples of Goldbach numbers include 20, 52, 48, 122 etc.

Algorithm

  • Step 1 − Get an integer number either by initialization or by user input.

  • Step 2 − Then declare two arrays which consecutively store the prime number.

  • Step 3 − Then start iteration inside which it will find two odd prime number pairs from the two arrays whose addition is the same as input number.

  • Step 4 − If we will not get any odd prime numbers pair then we can print that the given number is not a Goldbach number.

  • Step 5 − If we will get some pairs then we just print those pairs along with the result message that the input number is a Goldbach Number.

Multiple Approaches

We have provided the solution in different approaches.

  • By Using Static Input Value

  • By Using User Defined Method

Let’s see the program along with its output one by one.

Approach-1: By Using Static Input Value

In this approach one integer value will be initialized in the program and then by using the algorithm we can check whether a number is a Goldbach number or not.

Example

import java.io.*; import java.util.*; public class Main { public static void main(String args[]) { //declare all the variables int i, j, n, temp, b=0, c=0, sum=0; //declare a variable which stores the input number //assign a value to it int inputNumber=30; //declare a temporary variable which stores the input value temp=inputNumber; //declare two arrays with the capacity equal to input number int array1[]=new int[inputNumber]; int array2[]=new int[inputNumber]; //check whether the number is even or if(inputNumber%2!=0) { //if the input is not even then print it is not a Goldbach number System.out.println(inputNumber + " is not a Goldbach number."); } //if the input is even then proceed with further calculations else { //initiate the loop for finding the prime numbers for(i=1; i<=inputNumber; i++) { for(j=1; j<=i; j++) { if(i%j==0) { c++; } } //find the odd prime numbers if((c==2)&&(i%2!=0)) { //stores odd prime numbers into first array array1[b]=i; //stores odd prime numbers into second array array2[b]=i; //increments the value of b by 1 b++; } c=0; } //print the odd prime number pairs System.out.println("Odd Prime Pairs are: "); //loop for printing the value of ArrayStoreException for(i=0; i<b; i++) { for(j=i; j<b; j++) { //find the sum of two odd prime numbers sum=array1[i]+array2[j]; //condition for comparing the sum value with input number if(sum==temp) { //print pair of odd prime numbers System.out.print("(" + array1[i]+" , "+array2[j] + ")"); System.out.println(); } } } //print the final result if it is Goldbach number System.out.println(temp+" is a Goldbach number."); } } }

Output

Odd Prime Pairs are:
(7 , 23)
(11 , 19)
(13 , 17)
30 is a Goldbach number.

Approach-2: By Using User Defined Method

In this approach, initialize an integer value and then we call a user defined method by passing this input number as parameter.

Inside the method we will check whether a number is a Goldbach number or not by using the algorithm.

Example

import java.io.*; import java.util.*; public class Main { public static void main(String args[]) { //declare a variable which stores the input number //assign a value to it int inp=98; if(checkGoldbach(inp)) { //if true it is Goldbach number System.out.println(inp+" is a Goldbach number."); } else { //if false it is not a Goldbach number System.out.println(inp + " is not a Goldbach number."); } } //define the user defined method static boolean checkGoldbach(int inputNumber) { //declare all the variables int i, j, n, temp, b=0, c=0, sum=0; //declare a temporary variable which stores the input value temp=inputNumber; //declare two arrays with the capacity equal to input number int array1[]=new int[inputNumber]; int array2[]=new int[inputNumber]; //check whether the number is even or if(inputNumber%2!=0) { return false; } //if the input is even then proceed with further calculations else { //initiate the loop for finding the prime numbers for(i=1; i<=inputNumber; i++) { for(j=1; j<=i; j++) { if(i%j==0) { c++; } } //find the odd prime numbers if((c==2)&&(i%2!=0)) { //stores odd prime numbers into first array array1[b]=i; //stores odd prime numbers into second array array2[b]=i; //increments the value of b by 1 b++; } c=0; } //print the odd prime number pairs System.out.println("Odd Prime Pairs are: "); //loop for printing the value of Arrays for(i=0; i<b; i++) { for(j=i; j<b; j++) { //find the sum of two odd prime numbers sum=array1[i]+array2[j]; //condition for comparing the sum value with input number if(sum==temp) { //print pair of odd prime numbers System.out.print("(" + array1[i]+" , "+array2[j] + ")"); System.out.println(); } } } return true; } } }

Output

Odd Prime Pairs are:
(19 , 79)
(31 , 67)
(37 , 61)
98 is a Goldbach number.

In this article, we explored how to check a number whether it is a Goldbach number or not in Java by using three different approaches.

Updated on: 17-Nov-2022

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements