Enlightened Numbers
Last Updated :
22 Apr, 2021
Enlightened Number is a composite number N if it begins with the concatenation of its distinct prime factors
Some Enlightened numbers are:
250, 256, 2048, 2176, 2304, 2500, 2560…
Check if N is an Enlightened number
Given a number N, the task is to check if N is an Enlightened Number or not. If N is an Enlightened Number then print “Yes” else print “No”.
Examples:
Input: N = 2500
Output: Yes
Explanation:
factorization of 25 = 2^2 * 5^4
and N begins also with ’25’.
Input: N = 25
Output: No
Approach: The idea is to check if N is composite or not, If not composite return false otherwise concatenate all the distinct prime factors of the number N in a string. Also, convert the number N to string. Now we just have to check if the concatenation of distinct prime factors is a prefix of the number N or not, If it is then print “Yes” else print “No”.
Below is the implementation of the above approach:
C++
#include<iostream>
#include<math.h>
using namespace std;
bool isComposite( int n)
{
if (n <= 3)
return false ;
if (n % 2 == 0 || n % 3 == 0)
return true ;
for ( int i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return true ;
return false ;
}
int concatenatePrimeFactors( int n)
{
char concatenate;
if (n % 2 == 0)
{
concatenate += char (2);
while (n % 2 == 0)
n = n / 2;
}
for ( int i = 3; i <= sqrt (n); i = i + 2)
{
if (n % i == 0)
{
concatenate += i;
while (n % i == 0)
n = n / i;
}
}
if (n > 2)
concatenate += n;
return concatenate;
}
bool isEnlightened( int N)
{
if (!isComposite(N))
return false ;
char num = char (N);
char prefixConc = concatenatePrimeFactors(N);
return int (prefixConc);
}
int main()
{
int n = 250;
if (isEnlightened(n))
cout << "Yes" ;
else
cout << "No" ;
}
|
Java
import java.util.*;
class GFG {
static boolean isComposite( int n)
{
if (n <= 3 )
return false ;
if (n % 2 == 0 || n % 3 == 0 )
return true ;
for ( int i = 5 ; i * i <= n; i = i + 6 )
if (n % i == 0 || n % (i + 2 ) == 0 )
return true ;
return false ;
}
static String concatenatePrimeFactors( int n)
{
String concatenate = "" ;
if (n % 2 == 0 ) {
concatenate += "2" ;
while (n % 2 == 0 )
n = n / 2 ;
}
for ( int i = 3 ; i <= Math.sqrt(n); i = i + 2 ) {
if (n % i == 0 ) {
concatenate += i;
while (n % i == 0 )
n = n / i;
}
}
if (n > 2 )
concatenate += n;
return concatenate;
}
static boolean isEnlightened( int N)
{
if (!isComposite(N))
return false ;
String num = String.valueOf(N);
String prefixConc
= concatenatePrimeFactors(N);
return num.startsWith(prefixConc);
}
public static void main(String args[])
{
int n = 250 ;
if (isEnlightened(n))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
}
|
Python3
import math
def isComposite(n):
if n < = 3 :
return False
if (n % 2 = = 0 or n % 3 = = 0 ):
return True
i = 5
while (i * i < = n):
if (n % i = = 0 or n % (i + 2 ) = = 0 ):
return True
i = i + 6
return False
def concatenatePrimeFactors(n):
concatenate = ""
if (n % 2 = = 0 ):
concatenate + = "2"
while (n % 2 = = 0 ):
n = int (n / 2 )
i = 3
while (i < = int (math.sqrt(n))):
if (n % i = = 0 ):
concatenate + = str (i)
while (n % i = = 0 ):
n = int (n / i)
i = i + 2
if (n > 2 ):
concatenate + = str (n)
return concatenate
def isEnlightened(N):
if ( not isComposite(N)):
return False
num = str (N)
prefixConc = concatenatePrimeFactors(N)
return int (prefixConc)
if __name__ = = "__main__" :
n = 250
if (isEnlightened(n)):
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
class GFG{
static bool isComposite( int n)
{
if (n <= 3)
return false ;
if (n % 2 == 0 || n % 3 == 0)
return true ;
for ( int i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return true ;
return false ;
}
static String concatenatePrimeFactors( int n)
{
String concatenate = "" ;
if (n % 2 == 0)
{
concatenate += "2" ;
while (n % 2 == 0)
n = n / 2;
}
for ( int i = 3; i <= Math.Sqrt(n);
i = i + 2)
{
if (n % i == 0)
{
concatenate += i;
while (n % i == 0)
n = n / i;
}
}
if (n > 2)
concatenate += n;
return concatenate;
}
static bool isEnlightened( int N)
{
if (!isComposite(N))
return false ;
String num = String.Join( "" , N);
String prefixConc = concatenatePrimeFactors(N);
return num.StartsWith(prefixConc);
}
public static void Main(String []args)
{
int n = 250;
if (isEnlightened(n))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
}
|
Javascript
<script>
function isComposite(n)
{
if (n <= 3)
return false ;
if (n % 2 == 0 || n % 3 == 0)
return true ;
for ( var i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return true ;
return false ;
}
function concatenatePrimeFactors(n)
{
var concatenate;
if (n % 2 == 0)
{
concatenate += "2" ;
while (n % 2 == 0)
n = parseInt(n / 2);
}
for ( var i = 3; i <= Math.sqrt(n); i = i + 2)
{
if (n % i == 0)
{
concatenate += i;
while (n % i == 0)
n = parseInt(n / i);
}
}
if (n > 2)
concatenate += n;
return concatenate;
}
function isEnlightened(N)
{
if (!isComposite(N))
return false ;
var num = (N.toString());
var prefixConc = concatenatePrimeFactors(N);
return (prefixConc);
}
var n = 250;
if (isEnlightened(n))
document.write( "Yes" );
else
document.write( "No" );
</script>
|
Time Complexity: O(n)
Share your thoughts in the comments
Please Login to comment...