Tuesday 25 September 2018

To Find Number Is Prime Or Not At Very Less Complexity (O(sqrt(n)))


Prime numbers are the numbers which has only 2 factors i.e divisble by 1 and the number itself


Function:

bool isPrime(int n)
{
if(n<=1)   // if number is less than  number is not prime
  return false;
if(n<=2)     // if number is less than 2 than it prime because it is divisible by 2 and 1
  return true;
if(n%2==0||n%3==0)   // if the number is divided by 2 or 3 than it is not prime
{
return false;
}
for(int i=5;i*i<=n;i=i+6) 
     // check for 5 and than 11 than 17 which is all prime number  
   {
    if(n%i==0||n%(i+2)==0) 
   // check for 5 than 7 than 11 than 13 and so on
       return false;
   }
return true;
}

Twisted Prime Number


A Twisted Prime is a number whose itself is a prime number and its reverse is also prime number .


To solve this problem following are the approaches should be taken:

1)Check the number is prime or not 
2) If YES the REVERSE it and check  whether the number is Prime or not.


Programme:

//TO CHECK NUMBER IS PRIME  OR NOT AT   TIMECOMPLEXITYO(SQRT(n))  isPrime()
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n)     
           
{
if(n<=1)
  return false;
if(n<=2)
  return true;
if(n%2==0||n%3==0)
{
return false;
}
for(int i=5;i*i<=n;i=i+6)
   {
    if(n%i==0||n%(i+2)==0)
       return false;
   }
return true;
}

int revresee(int n)
{
int sum=0;
while(n>0)
{
int c=n%10;
sum=sum*10+c;
n=n/10;

}
return sum;
}




main()
{
int t;
cin>>t;
while(t>0)
{
int n,c;
cin>>n;
if(isPrime(n))
{
c=revresee(n);
//cout<<c;
if(isPrime(c))
  {
  cout<<"Yes"<<"\n";
  }
  else
    cout<<"No"<<"\n";
}
else
  cout<<"No"<<"\n";
}

}




For PRACTICE this question check this link:
  https://practice.geeksforgeeks.org/problems/twisted-prime-number/0