📜  小于n的圆形素数(1)

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

小于n的圆形素数

本文将介绍如何用程序找出小于n的圆形素数。圆形素数是指一个素数,其每一位数字都可以通过将该数字的最高位移动到最低位来得到。

算法概述

我们可以使用两个步骤来找出小于n的圆形素数。首先,我们首先需要检查我们的数字是否为素数。其次,我们需要检查数字是否为圆形素数。我们可以通过以下步骤来确定一个数字是否为圆形素数。

  1. 确定数字的位数并将其存储在count中

  2. 使用一个循环来生成每个数字的所有旋转版本

    1. 将数字的最高位移动到最低位,并将其存储在rotation中

    2. 如果rotation等于原始数字,则break

    3. 检查rotation是否为素数,如果不是,则break

    4. 如果循环完成,则该数字是一个圆形素数

我们可以将这个算法转换为代码的形式。

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

def is_circular_prime(n):
    count = len(str(n))
    rotation = n
    for i in range(count):
        if not is_prime(rotation):
            return False
        rotation = int(str(rotation)[1:] + str(rotation)[0])
        if rotation == n:
            return True
    return True

def circular_primes_below_n(n):
    circular_primes = []
    for i in range(2, n):
        if is_circular_prime(i):
            circular_primes.append(i)
    return circular_primes

在此代码中,我们定义了3个函数。第一个函数is_prime用于检查数字是否为素数。第二个函数is_circular_prime用于检查数字是否为圆形素数。第三个函数circular_primes_below_n用于生成小于n的圆形素数。我们可以使用以下代码调用此函数。

print(circular_primes_below_n(100))
# Output: [2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79]

该程序返回小于100的圆形素数2、3、5、7、11、13、17、31、37、71、73和79的列表。

结论

通过本篇文章,我们了解了如何使用Python代码来找出小于n的圆形素数。我们通过算法概述和代码实现的步骤来介绍了圆形素数的概念,并提供了一个代码示例,供程序员参考。