检查最小数字的第一个和最后一个数字是否在 Python 中形成质数
假设我们有一个名为digits的数组,它只包含数字。我们必须从给定的数字中找到可能的最小数字,然后通过获取生成数字的第一位和最后一位数字来检查数字是否为质数。我们将打印数字本身,然后打印质数。
因此,如果输入类似于digits=[5,2,1,7],那么输出将是1257是最小的数字。取第一位和最后一位的数字是17和71,都是质数。
为了解决这个问题,我们将按照以下步骤操作-
digits_freq:=包含数字频率的映射
数字:=空字符串
对于0到9范围内的i,请执行
number:=number连接数字i
对于0到digits_freq[i]-1范围内的j,执行
num:=取数字的第一位和最后一位数字
rev:=取数字的最后一位和第一位数字
如果num是素数,rev是素数,那么
返回编号,编号,转数
否则当num为素数时,则
返回编号,编号
否则当rev为素数时,则
返回编号,rev
否则,
返回错误
让我们看看以下实现以获得更好的理解-
示例代码
from collections import defaultdict def isPrime(num): if num > 1: for i in range(2, num): if num % i == 0: return False return True return False def solve(arr): digits_freq = defaultdict(int) for i in range(len(arr)): digits_freq[arr[i]] += 1 number = "" for i in range(0, 10): for j in range(digits_freq[i]): number += str(i) num = int(number[0] + number[-1]) rev = int(number[-1] + number[0]) if isPrime(num) and isPrime(rev): return int(number), num, rev elif isPrime(num): return number, num elif isPrime(rev): return number, rev else: return False digits = [5,2,1,7] print(solve(digits))
输入
[5,2,1,7]输出结果
(1257, 17, 71)