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 Codelet 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!



