在Python中检查给定的数字是否为Euclid Number

假设我们有一个数字n。我们必须检查n是否为Euclid数。众所周知,欧几里德数是整数,可以表示为 

n = P n +1

哪里是前n个素数的乘积。

因此,如果输入像n = 211,那么输出将为True n可以表示为 

211 =(2×3×5×7)+1

为了解决这个问题,我们将遵循以下步骤-

  • 最大:= 10000

  • 素数:=一个新列表

  • 定义功能 generate_all_primes()。这将需要

  • 素数:=大小为MAX并填充True的列表

  • x:= 2

  • 当x * x <MAX时

    • 对于范围在x * 2到MAX的i,每步更新x,执行

    • x:= x + 1

    • prime [i]:= False

    • 如果prime [x]为True,则

    • 对于2到MAX-1,范围内的x

      • 在素数末尾插入x

      • 如果prime [x]为true,则

    • 从主要方法执行以下操作:

    • generate_all_primes()

    • mul:= 1,i:= 0

    • 当mul <n时,

      • 返回True

      • mul:= mul *质数[i]

      • 如果mul + 1与n相同,则

      • 我:=我+ 1

    • 返回False

    让我们看下面的实现以更好地理解-

    范例程式码

    MAX = 10000
    primes = []
     
    def generate_all_primes():
       prime = [True] * MAX
     
       x = 2
       while x * x < MAX :
          if prime[x] == True:
             for i in range(x * 2, MAX, x):
               prime[i] = False
          x += 1
    
       for x in range(2, MAX):
          if prime[x]:
             primes.append(x)def solve(n):
       generate_all_primes()   mul = 1
       i = 0
     
       while mul < n :
          mul = mul * primes[i]
          if mul + 1 == n:
             return True
          i += 1
       return False
    
    n = 211
    print(solve(n))

    输入值

    211
    输出结果
    True

    猜你喜欢