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

📅  最后修改于: 2021-10-27 09:22:14             🧑  作者: 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
?>


Javascript


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