检查 N 是否是阶乘素数

原文:https://www . geesforgeks . org/check-if-n-is-factorial-prime/

给定一个正整数 N ,任务是检查 N 是否为阶乘素数。如果是阶乘素数,则打印否则打印注:在数学中,阶乘素数是一个比任意数的阶乘少一或多一的素数。前几个阶乘素数是 2,3,5,7,23,719,5039,…例:

输入: N = 23 输出: YES 23 是一个质数,比 4 (4!= 24). 输入: 11 输出: NO 11 是素数但也不能表示为 n!+ 1 或 n!– 1.

方法:为了使 N 成为阶乘数, N 必须是素数,并且N–1N + 1 应该是任意数的阶乘值。

  • 如果 N 不是质数,则打印 No
  • 否则设置事实= 1 并从 i = 1 开始更新事实=事实* i ,如果事实= N–1事实= N + 1 则打印
  • 重复上述步骤,直到事实≤ N + 1 ,如果条件不满足,则最终打印

以下是上述方法的实现:

C++

// C++ program to check if given
// number is a factorial prime

#include <bits/stdc++.h>
using namespace std;

// Utility function to check
// if a number is prime or not
bool isPrime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;

    // This is checked so that we can skip
    // middle five numbers in below loop
    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;
}

// Function that returns true if n is a factorial prime
bool isFactorialPrime(long n)
{

    // If n is not prime then return false
    if (!isPrime(n))
        return false;

    long fact = 1;
    int i = 1;
    while (fact <= n + 1) {

        // Calculate factorial
        fact = fact * i;

        // If n is a factorial prime
        if (n + 1 == fact || n - 1 == fact)
            return true;

        i++;
    }

    // n is not a factorial prime
    return false;
}

// Driver code
int main()
{

    int n = 23;

    if (isFactorialPrime(n))
        cout << "Yes";
    else
        cout << "No";

    return 0;
}

Java 语言(一种计算机语言,尤用于创建网站)

// Java program to check if given
// number is a factorial prime
class GFG {

    // Utility function to check
    // if a number is prime or not
    static boolean isPrime(long n)
    {
        // Corner cases
        if (n <= 1)
            return false;
        if (n <= 3)
            return true;

        // This is checked so that we can skip
        // middle five numbers in below loop
        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;
    }

    // Function that returns true if n is a factorial prime
    static boolean isFactorialPrime(long n)
    {

        // If n is not prime then return false
        if (!isPrime(n))
            return false;

        long fact = 1;
        int i = 1;
        while (fact <= n + 1) {

            // Calculate factorial
            fact = fact * i;

            // If n is a factorial prime
            if (n + 1 == fact || n - 1 == fact)
                return true;

            i++;
        }

        // n is not a factorial prime
        return false;
    }

    // Driver code
    public static void main(String args[])
    {

        int n = 23;

        if (isFactorialPrime(n))
            System.out.println("Yes");

        else
            System.out.println("No");
    }
}

Python 3

# Python3 program to check if given
# number is a factorial prime

# from math lib import sqrt function
from math import sqrt

# Utility function to check
# if a number is prime or not
def isPrime(n) :

    # Corner cases
    if (n <= 1) :
        return False

    if (n <= 3) :
        return True

    # This is checked so that we can skip
    # middle five numbers in below loop
    if (n % 2 == 0 or n % 3 == 0) :
        return False

    for i in range(5, int(sqrt(n)) + 1, 6) :
        if (n % i == 0 or n % (i + 2) == 0) :
            return False

    return True

# Function that returns true if n
# is a factorial prime
def isFactorialPrime(n) :

    # If n is not prime then return false
    if (not isPrime(n)) :
        return False

    fact = 1
    i = 1
    while (fact <= n + 1) :

        # Calculate factorial
        fact = fact * i

        # If n is a factorial prime
        if (n + 1 == fact or n - 1 == fact) :
            return True

        i += 1

    # n is not a factorial prime
    return False

# Driver code
if __name__ == "__main__" :

    n = 23

    if (isFactorialPrime(n)) :
        print("Yes")
    else :
        print("No")

# This code is contributed by Ryuga

C

// C# program to check if given
// number is a factorial prime
using System;
class GFG {

    // Utility function to check
    // if a number is prime or not
    static bool isPrime(long n)
    {
        // Corner cases
        if (n <= 1)
            return false;
        if (n <= 3)
            return true;

        // This is checked so that we can skip
        // middle five numbers in below loop
        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;
    }

    // Function that returns true if n is a factorial prime
    static bool isFactorialPrime(long n)
    {

        // If n is not prime then return false
        if (!isPrime(n))
            return false;

        long fact = 1;
        int i = 1;
        while (fact <= n + 1) {

            // Calculate factorial
            fact = fact * i;

            // If n is a factorial prime
            if (n + 1 == fact || n - 1 == fact)
                return true;

            i++;
        }

        // n is not a factorial prime
        return false;
    }

    // Driver code
    public static void Main()
    {

        int n = 23;

        if (isFactorialPrime(n))
            Console.WriteLine("Yes");

        else
            Console.WriteLine("No");
    }
}

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

<?php
// PHP program to check if given number
// is a factorial prime

// Utility function to check if a
// number is prime or not
function isPrime($n)
{
    // Corner cases
    if ($n <= 1)
        return false;
    if ($n <= 3)
        return true;

    // This is checked so that we can skip
    // middle five numbers in below loop
    if ($n % 2 == 0 || $n % 3 == 0)
        return false;

    for ($i = 5; $i * $i <= $n; $i = $i + 6)
        if ($n % $i == 0 || $n % ($i + 2) == 0)
            return false;

    return true;
}

// Function that returns true if
// n is a factorial prime
function isFactorialPrime($n)
{

    // If n is not prime then return false
    if (!isPrime($n))
        return false;

    $fact = 1;
    $i = 1;
    while ($fact <= $n + 1)
    {

        // Calculate factorial
        $fact = $fact * $i;

        // If n is a factorial prime
        if ($n + 1 == $fact || $n - 1 == $fact)
            return true;

        $i++;
    }

    // n is not a factorial prime
    return false;
}

// Driver code
$n = 23;

if (isFactorialPrime($n))
    echo "Yes";
else
    echo "No";

// This code is contributed by ita_c
?>

java 描述语言

// Javascript program to check if given number
// is a factorial prime

// Utility function to check if a
// number is prime or not
function isPrime(n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;

    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;

    for (let i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;

    return true;
}

// Function that returns true if
// n is a factorial prime
function isFactorialPrime(n)
{

    // If n is not prime then return false
    if (!isPrime(n))
        return false;

    let fact = 1;
    let i = 1;
    while (fact <= n + 1)
    {

        // Calculate factorial
        fact = fact * i;

        // If n is a factorial prime
        if (n + 1 == fact || n - 1 == fact)
            return true;

        i++;
    }

    // n is not a factorial prime
    return false;
}

// Driver code
let n = 23;

if (isFactorialPrime(n))
    document.write("Yes");
else
    document.write("No");

// This code is contributed by gfgking

Output: 

Yes