在Python中检查给定的数字是否为Euclid Number
假设我们有一个数字n。我们必须检查n是否为Euclid数。众所周知,欧几里德数是整数,可以表示为
n=Pn+1
哪里是前n个素数的乘积。
因此,如果输入像n=211,那么输出将为Truen可以表示为
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