📅  最后修改于: 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)
注意:本题可能存在整型溢出问题,需要特别注意。