#include #include int checkIfPrime(int x); int checkIfPalindrome(int x); int extractPrimeFactors(int a[],int num); void permutate(int a[],int lastIndex,int number); int checkedAndPrinted[100],in; int main() { int array[100],n,i; in=0; for(i=0;i<100;i++) { array[i] = -1; checkedAndPrinted[i] = -1; } printf("Enter the number "); scanf("%d",&n); int lastIndex = extractPrimeFactors(array,n); permutate(array,lastIndex,0); printf("\n"); return 0; } int checkIfPrime(int x) { if(x==1) return 0; int i=0; int isPrime = 1; for(i=2;i<= x/2;i++) { if(x%i==0) { isPrime = 0; return isPrime; } } return isPrime; } int checkIfPalindrome(int x) { int n = x; int sum = 0; while(n > 0) { int digit = n%10; n = n/10; sum = sum*10 + digit; } if(sum == x) { return 1; } else return 0; } int extractPrimeFactors(int a[],int num) { int i=0,n=num,index=0; for(i=1;i 10 && temp < 100) { permutate(a,lastIndex,number*100+temp); } if(temp > 100 && temp < 1000) { permutate(a,lastIndex,number*1000+temp); } a[i] = temp; // this step ensures that a prime number used in this step is available for use in any sibling branch's step } }