Question

# Display Elements which are smith and emirp from the array.

## Only using main method.

(AnĀ Emirp Number (prime spelled backwards) is a prime number that results in a different prime when its decimal digits are reversed.)
(A Smith Number is a composite number whose sum of digits is equal to the sum of digits in its prime factorization)

Enter the size of array:
10
Enter elements in array:
101
3
22
4
666
12
31
13
113
311
Emirp Numbers Unsorted:
101 3 31 13 113 311
Smith Number Unsorted:
22 4 666
Emirp Numbers Sorted:
3 13 31 101 113 311
Smith Number sorted:
4 22 666

# Share code with your friends

Code

import java.util.Scanner;
public class array
{

public static void main()
{
int arr[],emirpArray[],SmithArray[],tempArr[];
int n,i=0,count=0,flag=0,flag1=0,rev=0,temp=0,k=0,sumd=0,sump=0,j=0,temp1=0,l=0,m=0;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the size of array:");
n=sc.nextInt();
arr=new int[n];
emirpArray=new int[n];
SmithArray=new int[n];
System.out.println("Enter elements in array:");
for(i=0;i< n;i++)
{
arr[i]=sc.nextInt();
}
//Emirp Number Checking
for(i=0;i< n;i++)
{
if(arr[i]>1)
{
for(j=2;j< arr[i];j++)
{
if(arr[i]%j==0)
{
flag=1;
break;
}
}
}
else
{
flag=1;
}
temp=arr[i];
while(temp>0)
{
rev=rev*10+temp%10;
temp=temp/10;
}
if(rev>1)
{
for(j=2;j< rev;j++)
{
if(rev%j==0)
{
flag1=1;
break;
}
}
}
else
{
flag1=1;
}
if(flag==0&&flag1==0)
{

emirpArray[k]=arr[i];
k++;
}
//Emirp number checking Ends here
flag=0;
flag1=0;
rev=0;
sump=0;
sumd=0;
//Smith number checking Starts Here
temp=arr[i];
while(temp>0)
{
sumd=sumd+(temp%10);
temp=temp/10;
}
temp=arr[i];
for(j=2;j<=arr[i]/2;j++)
{
while(temp%j==0)
{

flag=0;
//checking whether number is prime number or not
for(m=2;m< j;m++)
{

if(m%j==0)
{
flag=1;
break;
}
}
//if number is prime then only it is added to sump
if(flag==0)
{
temp1=m;
//Extracting digits if i >9 and then adding extracted digits to sump
while(temp1>0)
{
sump=sump+(temp1%10);
temp1=temp1/10;
}
temp=temp/m;

}

}
}

if(sumd==sump && arr[i]>0)
{
SmithArray[l]=arr[i];
l++;
}
//Smith number checking ends Here

}
//Creating emirpArray
tempArr=new int[k];
for(i=0;i< k;i++)
{
tempArr[i]=emirpArray[i];
}
emirpArray=tempArr;
tempArr=new int[l];
//Creating smithArray
for(i=0;i< l;i++)
{
tempArr[i]=SmithArray[i];
}
SmithArray=tempArr;

System.out.println("Emirp Numbers Unsorted:");
//Printing Emirp Number array
for(i=0;i< k;i++)
{
System.out.print(emirpArray[i]+" ");
}

System.out.println();
System.out.println("Smith Number Unsorted:");
//Printing Smith Number array
for(i=0;i< l;i++)
{
System.out.print(SmithArray[i]+" ");
}

//sorting emirp number array
for(i=0;i< k;i++)
{
for(j=0;j< k;j++)
{
if(emirpArray[i]< emirpArray[j])
{
temp=emirpArray[i];
emirpArray[i]=emirpArray[j];
emirpArray[j]=temp;
}
}
}
System.out.println();
System.out.println("Emirp Numbers Sorted:");

for(i=0;i< k;i++)
{
System.out.print(emirpArray[i]+" ");
}
//sorting smith number array
for(i=0;i< l;i++)
{
for(j=0;j< l;j++)
{
if(SmithArray[i]< SmithArray[j])
{
temp=SmithArray[i];
SmithArray[i]=SmithArray[j];
SmithArray[j]=temp;
}
}
}
System.out.println();
System.out.println("Smith Number sorted:");

for(i=0;i< l;i++)
{
System.out.print(SmithArray[i]+" ");
}
}
}

Sale

50
Sale

150
Sale

200
Sale

50
Sale

50
Sale

50
Sale

50
Sale

50
Sale

50