Open In App

C++ Program to Print the Largest Possible Prime Number From a Given Number

Given an integer, the task is to find the largest prime number that can be made out of that. If we consider the integer as a string of digits, then the prime number can be a substring of any length. The examples given below will clarify the idea of the problem.

Example:



Input: 12691
Output: 691

Approach:




// C++ program to Print the Largest
// Possible Prime Number From a
// Given Number
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
 
// function to check whether the
// substring is prime or not
bool isprime(string f)
{
    int n = stoi(f);
   
    // corner case check
    if (n <= 1)
        return false;
 
    // Check from 2 to n-1
    for (int i = 2; i < n; i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}
int longp(int a)
{
    // convert the number to a string
    string d = to_string(a);
    int n = d.length();
    int c = INT_MIN;
    for (int i = 0; i < n; i++) {
        for (int len = 1; len <= n - i; len++) {
           
            // calculate the substrings of the string
            string p = d.substr(i, len);
           
            // pass the substring to the prime check
            // function
            if (isprime(p)) {
                int l = stoi(p);
               
                // store the maximum value of the prime
                // substring
                c = max(c, l);
            }
        }
    }
    return c;
}
// Driver Code
int main()
{
 
    long long int n = 12691;
    int k = longp(n);
    cout << k;
    return 0;
}

Output

691

Time Complexity: O(N3)
Auxiliary Space: O(1)


Article Tags :