📜  非重复素数(1)

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

非重复素数

在数学中,素数是大于1且只能被1和自身整除的正整数。而非重复素数则是指在一个数字中,每个数字出现过一次,且该数字本身也是素数的数字。例如,23就是一个非重复素数,它既是素数,同时每个数字出现了一次。

程序实现

我们可以通过编写函数来判断一个数字是否为素数,并利用哈希表存储数字出现的次数,从而判断一个数字是否为非重复素数。

def is_prime(num):
    """
    判断一个数字是否为素数
    """
    if num <= 1:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True


def is_not_duplicate_prime(num):
    """
    判断一个数字是否为非重复素数
    """
    nums = {}
    str_num = str(num)
    for i in range(len(str_num)):
        if str_num[i] in nums:
            return False
        nums[str_num[i]] = 1
    return is_prime(num)
示例输出
print(is_not_duplicate_prime(23)) # True
print(is_not_duplicate_prime(11)) # False
print(is_not_duplicate_prime(3797)) # True
总结

通过上述的代码,我们可以判断某个数字是否为非重复素数。同时,我们也可以对该算法进行改进,在寻找大量非重复素数时,可以将素数判断的过程放在哈希表中,从而减少时间复杂度,并提高程序执行效率。