数字是有魔力的。人们根据自己的特长为不同的数字命名。在这篇文章中,我们将讨论什么是莫兰数。我们还将在Python中实现一个程序来检查一个数字是否是莫兰数字。
什么是莫兰号码?
莫兰数是一个数字,当它被其数字之和除以时,其结果是一个素数。换句话说,如果我们取一个莫兰数字,计算它的数字之和,然后用数字之和除以该数字,结果将是一个素数。莫兰数是哈沙数的一个子集。
例如,42是一个莫兰数。如果你计算它的数字之和,它是6。42除以6,结果是7,这是一个素数。因此,42是一个莫兰数字。
另一方面,如果我们以20为例,它的位数之和是2。因此,20不是莫兰数。
在Python中检查莫兰数
要在Python中检查一个莫兰数,我们必须进行以下操作。
- 计算给定数字的位数之和。
- 用数字的总和除以该数字。
- 检查除法的结果是否是一个素数。
让我们先讨论如何找到数字的位数之和。
为了找到给定数字的位数之和,我们将用该数字除以10,直到该数字变成0。我们将利用余数来计算数字之和,方法是在每次除法时将余数相加,如下所示。
def calculate_sum_of_digits(N):
sumOfDigits = 0
while N > 0:
digit = N % 10
sumOfDigits = sumOfDigits + digit
N = N // 10
return sumOfDigits
找出数字之和后,你可以用给定的数字除以数字之和来找出结果。现在,我们必须检查这个数字是否是一个质数。为此,我们将用结果除以从2到结果的平方根的所有数字。如果结果能被这个范围内的任何一个数字整除,这个数字就不是素数。下面给出的isPrime()函数执行了这个操作。它接受一个数字作为输入参数,如果给定的数字是一个质数,则返回True。否则,它返回 "假"。
def isPrime(N):
count = 2
while count ** 2 <= N:
if N % count == 0:
return False
count = count + 1
return True
在Python中检查莫兰数的程序
在定义了计算数字之和和检查素数的函数后,我们可以用Python写一个检查莫兰数的程序,如下所示。
def calculate_sum_of_digits(N):
sumOfDigits = 0
while N > 0:
digit = N % 10
sumOfDigits = sumOfDigits + digit
N = N // 10
return sumOfDigits
def isPrime(N):
count = 2
while count ** 2 <= N:
if N % count == 0:
return False
count = count + 1
return True
def check_for_moran_number(N):
sumOfDigits = calculate_sum_of_digits(N)
if N % sumOfDigits == 0:
result = N // sumOfDigits
return isPrime(result)
else:
return False
input_number = 42
output = check_for_moran_number(input_number)
print("{} is a Moran Number:{}".format(input_number, output))
input_number = 20
output = check_for_moran_number(input_number)
print("{} is a Moran Number:{}".format(input_number, output))
输出。
42 is a Moran Number:True
20 is a Moran Number:False
结论
在这篇文章中,我们已经讨论了什么是莫兰数。我们还讨论了检查莫兰数的步骤,并在Python中实现了它。