📜  带有质数位的最大数字(1)

📅  最后修改于: 2023-12-03 15:39:26.985000             🧑  作者: Mango

带有质数位的最大数字

在数学中,质数是仅能被 1 和它本身整除的正整数,例如 2、3、5、7、11、13 等。在本题中,我们需要找到带有质数位的最大数字。

题目描述

给定一个 n(1 ≤ n ≤ 10^9),找到最大的 x,使得 x 的各位数都为质数。

示例

输入:

n = 20

输出:

x = 733333333
思路

我们可以从最高位开始往下填入质数。首先确定最高位,最高位不能填 2,否则该数不是 n 的倍数;如果 n 大于等于 5,最高位填 5,否则填 3。接下来从高位到低位,每一位都填上最大的质数即可。

代码实现
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

def get_largest_prime_number(n):
    if n < 2:
        return -1
    if n == 2:
        return 2
    if n == 3:
        return 3
    if n > 3 and n < 5:
        return 3
    if n >= 5:
        x = ''
        for i in range(len(str(n))):
            if i == 0:
                if n >= 5:
                    x += '5'
                else:
                    x += '3'
            else:
                x += '3'
        return int(x)

n = 20
x = get_largest_prime_number(n)
print(x)

注意:本题可能存在整型溢出问题,需要特别注意。