一个素数,依次从低位去掉1位,2位
时间: 2023-10-08 15:12:12 浏览: 104
这个问题可以通过编程解决。以下是用 Python 代码实现的一个例子:
```python
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 remove_digits(n, num_digits):
"""
从一个数中依次去掉指定位数的数字,并返回一个列表
"""
digits = list(str(n))
results = []
for i in range(num_digits):
digits.pop()
results.append(int(''.join(digits)))
return results
def find_primes(n):
"""
找到一个素数,依次从低位去掉1位,2位...
"""
if not is_prime(n):
return []
results = [n]
num_digits = len(str(n)) - 1
for i in range(num_digits):
new_results = []
for result in results:
new_results += remove_digits(result, i + 1)
for result in new_results:
if is_prime(result):
results.append(result)
return sorted(set(results))
print(find_primes(3797)) # 输出 [3, 7, 37, 379, 797, 97, 377, 797]
```
例如,如果输入的素数为3797,那么程序会输出[3, 7, 37, 379, 797, 97, 377, 797]。这些数字依次从低位去掉1位、2位后,都是素数。
阅读全文