📌  相关文章
📜  检查最小数字的第一位和最后一位是否形成质数

📅  最后修改于: 2021-04-27 21:20:34             🧑  作者: Mango

给定数组arr []仅包含从0到9的数字,任务是从给定的数字中形成最小的可能数字,然后检查由此创建的数字的第一位和最后一位是否可以重新排列以形成质数或不是。

例子:

方法:

  1. 创建一个大小为10的哈希表,以将给定数组中出现的数字存储到哈希表中。
  2. 从数字0开始按降序打印数字。它们与最小数字的相似之处在于重新排列给定数字的数字。
  3. 对于素数检查,请检查使用第一位和最后一位数字形成的数字是否为素数。反向执行相同的操作。

下面是上述方法的实现:

C++
// C++ implementation of above approach
#include 
using namespace std;
  
// function to check prime
int isPrime(int n)
{
    int i, c = 0;
    for (i = 1; i < n / 2; i++) {
        if (n % i == 0)
            c++;
    }
    if (c == 1)
        return 1;
    else
        return 0;
}
  
// Function to generate smallest possible
// number with given digits
void findMinNum(int arr[], int n)
{
    // Declare a hash array of size 10
    // and initialize all the elements to zero
    int first = 0, last = 0, num, rev, i;
    int hash[10] = { 0 };
  
    // store the number of occurrences of the digits
    // in the given array into the hash table
    for (int i = 0; i < n; i++) {
        hash[arr[i]]++;
    }
  
    // Traverse the hash in ascending order
    // to print the required number
    cout << "Minimum number: ";
    for (int i = 0; i <= 9; i++) {
  
        // Print the number of times a digits occurs
        for (int j = 0; j < hash[i]; j++)
            cout << i;
    }
  
    cout << endl;
  
    // extracting the first digit
    for (i = 0; i <= 9; i++) {
        if (hash[i] != 0) {
            first = i;
            break;
        }
    }
    // extracting the last digit
    for (i = 9; i >= 0; i--) {
        if (hash[i] != 0) {
            last = i;
            break;
        }
    }
  
    num = first * 10 + last;
    rev = last * 10 + first;
  
    // printing the prime combinations
    cout << "Prime combinations: ";
    if (isPrime(num) && isPrime(rev))
        cout << num << " " << rev;
  
    else if (isPrime(num))
        cout << num;
  
    else if (isPrime(rev))
        cout << rev;
  
    else
        cout << "No combinations exist";
}
  
// Driver code
int main()
{
    int arr[] = { 1, 2, 4, 7, 8};
    findMinNum(arr, 5);
  
    return 0;
}


Java
// Java implementation of above approach
  
import java.io.*;
  
class SmallPrime 
{
  
// function to check prime
static boolean isPrime(int n)
{
    int i, c = 0;
    for (i = 1; i < n / 2; i++) 
    {
        if (n % i == 0)
            c++;
    }
    if (c == 1)
    {
        return true;
    }
    else
    {
        return false;
    }
}
  
// Function to generate smallest possible
// number with given digits
static void findMinNum(int arr[], int n)
{
    // Declare a hash array of size 10
    // and initialize all the elements to zero
    int first = 0, last = 0, num, rev, i;
    int hash[] = new int[10];
  
    // store the number of occurrences of the digits
    // in the given array into the hash table
    for ( i = 0; i < n; i++)
    {
        hash[arr[i]]++;
    }
  
    // Traverse the hash in ascending order
    // to print the required number
    System.out.print("Minimum number: ");
    for ( i = 0; i <= 9; i++)
    {
  
        // Print the number of times a digits occurs
        for (int j = 0; j < hash[i]; j++)
            System.out.print(i);
              
    }
    System.out.println();
  
    System.out.println();
    // extracting the first digit
    for (i = 0; i <= 9; i++)
    {
        if (hash[i] != 0) 
        {
            first = i;
            break;
        }
    }
    // extracting the last digit
    for (i = 9; i >= 0; i--) 
    {
        if (hash[i] != 0)
        {
            last = i;
            break;
        }
    }
  
    num = first * 10 + last;
    rev = last * 10 + first;
  
    // printing the prime combinations
    System.out.print( "Prime combinations: ");
    if (isPrime(num) && isPrime(rev))
    {
        System.out.println(num + " " + rev);
    }    
    else if (isPrime(num))
    {
        System.out.println(num);
    }    
    else if (isPrime(rev))
    {
        System.out.println(rev);
    }    
  
    else
    {
        System.out.println("No combinations exist");
    }
}
  
// Driver code
  
    public static void main (String[] args) 
    {
       SmallPrime smallprime = new SmallPrime(); 
       int arr[] = {1, 2, 4, 7, 8};
       smallprime.findMinNum(arr, 5);
    }
}
  
// This code has been contributed by inder_verma.


Python3
# Python3 implementation of above 
# approach
import math as mt 
  
# function to check prime
def isPrime(n):
    i, c = 0, 0
    for i in range(1, n // 2):
        if (n % i == 0):
            c += 1
      
    if (c == 1):
        return 1
    else:
        return 0
  
# Function to generate smallest possible
# number with given digits
def findMinNum(arr, n):
      
    # Declare a Hash array of size 10
    # and initialize all the elements to zero
    first, last = 0, 0
    Hash = [0 for i in range(10)]
  
    # store the number of occurrences of
    # the digits in the given array into 
    # the Hash table
    for i in range(n):
        Hash[arr[i]] += 1
  
    # Traverse the Hash in ascending order
    # to print the required number
    print("Minimum number: ", end = "")
    for i in range(0, 10):
          
        # Print the number of times 
        # a digits occurs
        for j in range(Hash[i]):
            print(i, end = "")
              
    print()
      
    # extracting the first digit
    for i in range(10):
        if (Hash[i] != 0):
            first = i
            break
          
    # extracting the last digit
    for i in range(9, -1, -1):
        if (Hash[i] != 0):
            last = i
            break
          
    num = first * 10 + last
    rev = last * 10 + first
  
    # printing the prime combinations
    print("Prime combinations: ", end = "")
    if (isPrime(num) and isPrime(rev)):
        print(num, " ", rev)
    elif (isPrime(num)):
        print(num)
    elif (isPrime(rev)):
        print(rev)
    else:
        print("No combinations exist")
  
# Driver code
arr = [ 1, 2, 4, 7, 8]
findMinNum(arr, 5)
  
# This code is contributed by
# Mohit kumar 29


C#
// C# implementation of above approach
using System;
  
class GFG 
{
  
// function to check prime
static bool isPrime(int n) 
{
    int i, c = 0;
    for (i = 1; i < n / 2; i++)
    {
        if (n % i == 0) 
        {
            c++;
        }
    }
    if (c == 1) 
    {
        return true;
    }
    else
    {
        return false;
    }
}
  
// Function to generate smallest 
// possible number with given digits
static void findMinNum(int[] arr, int n) 
{
    // Declare a hash array of 
    // size 10 and initialize 
    // all the elements to zero
    int first = 0, last = 0, num, rev, i;
    int[] hash = new int[10];
  
    // store the number of occurrences 
    // of the digits in the given array 
    // into the hash table
    for (i = 0; i < n; i++) 
    {
        hash[arr[i]]++;
    }
  
    // Traverse the hash in ascending order
    // to print the required number
    Console.Write("Minimum number: ");
    for (i = 0; i <= 9; i++) 
    {
  
        // Print the number of times 
        // a digits occurs
        for (int j = 0; j < hash[i]; j++)
        {
            Console.Write(i);
        }
  
    }
    Console.WriteLine();
  
    Console.WriteLine();
      
    // extracting the first digit
    for (i = 0; i <= 9; i++) 
    {
        if (hash[i] != 0) 
        {
            first = i;
            break;
        }
    }
      
    // extracting the last digit
    for (i = 9; i >= 0; i--) 
    {
        if (hash[i] != 0)
        {
            last = i;
            break;
        }
    }
  
    num = first * 10 + last;
    rev = last * 10 + first;
  
    // printing the prime combinations
    Console.Write("Prime combinations: ");
    if (isPrime(num) && isPrime(rev)) 
    {
        Console.WriteLine(num + " " + rev);
    }
    else if (isPrime(num)) 
    {
        Console.WriteLine(num);
    } 
    else if (isPrime(rev)) 
    {
        Console.WriteLine(rev);
    } 
    else 
    {
        Console.WriteLine("No combinations exist");
    }
}
  
// Driver code
public static void Main() 
{
    int[] arr = {1, 2, 4, 7, 8};
    findMinNum(arr, 5);
}
}
  
// This code is contributed 
// by PrinciRaj1992


PHP
= 0; $i--) 
    {
        if ($hash[$i] != 0) 
        {
            $last = $i;
            break;
        }
    }
  
    $num = $first * 10 + $last;
    $rev = $last * 10 + $first;
  
    // printing the prime combinations
    echo "\nPrime combinations: ";
    if (isPrime($num) && isPrime($rev))
        echo $num. " " . $rev;
  
    else if (isPrime($num))
        echo $num;
  
    else if (isPrime($rev))
        echo $rev;
  
    else
        echo "No combinations exist";
}
  
// Driver Code
$arr = array(1, 2, 4, 7, 8);
findMinNum($arr, 5);
  
// This code is contributed 
// by Rajput-Ji
?>


输出:
Minimum number: 12478
Prime combinations: No combinations exist