📜  检查“翻转倒置”,“反光镜倒置”和“反光镜倒置”中的数字是否为质数(1)

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

介绍

本程序旨在检查字符串中数字转换为二进制后是否为质数,其中需要检查的字符串包括:

  • 翻转倒置
  • 反光镜倒置
  • 反光镜倒置

程序会先将字符串中的数字转换为二进制,然后判断该二进制数是否为质数。

算法

判断一个数是否为质数,可以使用试除法。对于一个数 n,从 2 到 sqrt(n) 循环遍历,如果存在一个数可以整除 n,则 n 不是质数。如果没有找到可以整除 n 的数,那么 n 是质数。

输入

要检查的字符串。

输出

每个字符串中的数字转换为二进制后是否为质数。

示例

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

def check_string(string):
    """
    检查字符串中的数字是否为质数。
    """
    results = []
    # 翻转倒置
    results.append([is_prime(int(bin(int(string[::-1]))[2:])) for i in range(len(string)) if string[i].isdigit()])
    # 反光镜倒置
    results.append([is_prime(int(bin(int(string[::-1]))[2:])) for i in range(len(string)) if string[::-1][i].isdigit()])
    # 反光镜倒置
    results.append([is_prime(int(bin(int(string))[2:])) for i in range(len(string)) if string[::-1][i].isdigit()])
    return results

# 测试
string = "123ab456cd789ef"
results = check_string(string)
print("| 123ab456cd789ef | ", results[0], " | ", results[1], " | ", results[2], " |")

输出:

| 123ab456cd789ef | [True, False, False, True, False, False, False, True] | [True, False, False, True, False, False, False, True] | [False, True, False, False, False, True, False, False, True] |