Count distinct prime triplets up to N such that sum of two primes is equal to the third prime

Given an integer N, the task is to count the number of distinct prime triplets (a, b, c) from the range [1, N] such that a < b < c ? N and a + b = c.
Note: Two prime tuples are distinct if at least one of the primes present in them are different.
Examples:
Input: N = 6
Output: 1
Explanation: Among numbers in the range [1, 6], the only prime triplet is (2, 3, 5) (Since 2 + 3 = 5).Input: N = 10
Output: 2
Explanation: The distinct prime triplets satisfying the condition are (2, 3, 5), (2, 5, 7).
Approach: The problem can be solved based on the observation stated below:
Observation:Â
For every prime number p from 1 to N, it is a part of a triplet if and only if it can be represented as a sum of two prime numbers.Â
Since a prime number is an odd number, it must be equal to the sum of an even number and an odd number.Â
Hence the only even prime is 2. Therefore, for a prime number p to constitute a unique tuple (2, p-2, p), the number p – 2 must be a prime number.
Follow the steps below to solve the problem:
- Initialize a variable, say count = 0, to store the number of prime triplets.
- Iterate from 1 to N and for each number p, check if this number p and p – 2 are prime or not.
- If they are prime, then increment count by 1.
- Print the value of count.
Below is the implementation of the above approach:
C++
// C++ program for the above approachÂ
#include <bits/stdc++.h>using namespace std;Â
// Function to check if a// number is a prime or notbool isPrime(int N){Â Â Â Â if (N <= 1)Â Â Â Â Â Â Â Â return false;Â
    for (int i = 2; i <= sqrt(N); i++) {        if (N % i == 0)            return false;    }Â
    return true;}Â
// Function to count the number// of valid prime tripletsvoid countPrimeTuples(int N){    // Stores the count    // of prime triplets    int count = 0;Â
    // Iterate from 2 to N and check for each    // p, whether p & (p - 2) are prime or not    for (int i = 2; i <= N; i++) {Â
        if (isPrime(i) && isPrime(i - 2))            count++;    }Â
    // Print the count obtained    cout << count;}Â
// Driver Codeint main(){Â Â Â Â int N = 6;Â Â Â Â countPrimeTuples(N);Â
    return 0;} |
Java
// Java program for the above approachimport java.io.*;class GFG{     // Function to check if a  // number is a prime or not  static boolean isPrime(int N)  {      if (N <= 1)          return false;      for (int i = 2; i <= Math.sqrt(N); i++)      {          if (N % i == 0)              return false;      }      return true;  }Â
  // Function to count the number  // of valid prime triplets  static void countPrimeTuples(int N)  {           // Stores the count      // of prime triplets      int count = 0;Â
      // Iterate from 2 to N and check for each      // p, whether p & (p - 2) are prime or not      for (int i = 2; i <= N; i++)       {          if (isPrime(i) && isPrime(i - 2))              count++;      }Â
      // Print the count obtained      System.out.println(count);  }Â
  // Driver Code  public static void main (String[] args)   {     int N = 6;    countPrimeTuples(N);  }}Â
// This code is contributed by Dharanendra L V. |
Python3
# Python3 program for the above approachimport math Â
# Function to check if a# number is a prime or notdef isPrime(N) :    if (N <= 1) :        return False    for i in range(2, int(math.sqrt(N) + 1)):        if (N % i == 0) :            return False    return TrueÂ
# Function to count the number# of valid prime tripletsdef countPrimeTuples(N) :         # Stores the count    # of prime triplets    count = 0Â
    # Iterate from 2 to N and check for each    # p, whether p & (p - 2) are prime or not    for i in range(2, N + 1):Â
        if (isPrime(i) and isPrime(i - 2)) :            count += 1         # Print count obtained    print(count)Â
# Driver CodeN = 6countPrimeTuples(N)Â
# This code is contributed by susmitakundugoaldanga. |
C#
// C# program for the above approachusing System;public class GFG{       // Function to check if a  // number is a prime or not  static bool isPrime(int N)  {      if (N <= 1)          return false;      for (int i = 2; i <= Math.Sqrt(N); i++)       {          if (N % i == 0)              return false;      }      return true;  }Â
  // Function to count the number  // of valid prime triplets  static void countPrimeTuples(int N)  {           // Stores the count      // of prime triplets      int count = 0;Â
      // Iterate from 2 to N and check for each      // p, whether p & (p - 2) are prime or not      for (int i = 2; i <= N; i++)       {          if (isPrime(i) && isPrime(i - 2))              count++;      }Â
      // Print the count obtained      Console.WriteLine(count);  }Â
  // Driver Code  static public void Main ()  {    int N = 6;    countPrimeTuples(N);  }}Â
// This code is contributed by Dharanendra L V. |
Javascript
<script>Â
// Javascript program for the above approachÂ
// Function to check if a// number is a prime or notfunction isPrime(N){Â Â Â Â if (N <= 1)Â Â Â Â Â Â Â Â return false;Â
    for (let i = 2; i <= Math.sqrt(N); i++) {        if (N % i == 0)            return false;    }Â
    return true;}Â
// Function to count the number// of valid prime tripletsfunction countPrimeTuples(N){    // Stores the count    // of prime triplets    let count = 0;Â
    // Iterate from 2 to N and check for each    // p, whether p & (p - 2) are prime or not    for (let i = 2; i <= N; i++) {Â
        if (isPrime(i) && isPrime(i - 2))            count++;    }Â
    // Print the count obtained    document.write(count);}Â
// Driver CodeÂ
let N = 6;countPrimeTuples(N);Â
// This code is contributed by _saurabh_jaiswalÂ
</script> |
1
Â
Time Complexity: O(N3/2)
Auxiliary Space: O(1)Â
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



