《python语言程序设计》2018版第6章第25(反素数逆向拼写素数)是指一个将其逆向拼写,我不懂反素数公式看不懂。放弃了。

在这里插入图片描述
首先使用之前的确认素数的函数is_prime来进行素数的识别
我在网上看到来一个反素数的公式。在这个公式中我还是不能理解,这些数学问题。
我先把对数学的理解放到一边。
之前的版本我是采用对整数化的素数分成二个或三个的位数。然后经过倒序来显示。

I del before judge prime revers design code line
I have new result
OK .I find method of prime
反素数(Anti-prime number)
我看不懂反素数的公式
我觉得可以利用回文数的计算方式。来进行比对
比如如果素数13进行拆分1,3
然后倒序打印如果这个数是素数则作为反素数显示
现在我要做一个识别素数的代码当然现成的就是is_prime()
那么我就利用两次is_prime函数来吧!!!!
通过lessNum和moreNum两个函数我们将两位数和三位数的正素数进行
倒序打印,中间增加了字符串到整数的过程

# 二位数识别
def lessNum(num):
    num1 = num // 10
    num2 = num % 10
    # 先将他们变成字符串
    a = str(num2) + str(num1)
    # 然后再将倒置后的字符串变回整数int
    a_int = int(a)
    # return num2, num1
    return a_int


# 三位数识别
def moreNum(num):
    num1 = num // 100
    num2 = num // 10 % 10
    num3 = num % 10
    if num3 != num1:
        a = str(num3) + str(num2) + str(num1)
        a_int = int(a)
        return a_int
    else:
        return None


def is_prime(number):
    divisor = 2
    while divisor <= number / 2:
        if number % divisor == 0:
            return False
        divisor += 1
    return True


def primeToAntiPrime(number):
    if number <= 97:
        return lessNum(number)
    else:
        return moreNum(number)


def print_prime_numbers(number_of_primes):
    number_of_primes_per_line = 10
    count = 0
    number = 2
    while count < number_of_primes:
        if is_prime(number) is True:
            count += 1
            aTxt = is_prime(number)
            judgeNum = primeToAntiPrime(aTxt)
            if is_prime(judgeNum) is True:
                print(judgeNum, end=" ")
                if count % number_of_primes_per_line == 0:
                    print()
        number += 1


def main():
    print("The first 1000 prime number are")
    print_prime_numbers(1000)


main()

在这里插入图片描述
竟然没有显示结果好继续

2024.7.30
昨天晚上的情绪是一落千丈。又一路起飞。
不行了。眼珠都滂了
我现在的逻辑是
首先将得到正常素数,做反向输出得出所谓的反素数。
然后再把反素数放回到素数函数中进行识别,
如果成功将其加入素数打印输出的序列
这个办法是因为我并不理解所谓反素数的数学公式才出此下策。
经过昨天的努力我已经有了。
反向输出97以下两位数的lessNum函数
反向输出100以上三位数的moreNum函数

我想是不是应该这样,我不做反向输出打印,而是做反向输出的对比
比如说正素数和反素数的各个位数之间对比,如果对比成功就说明二者互为相反的关系


2024.07.31
我放弃按答案那种一个个按顺序打印反素数。
因为我不清楚反素数的公式。

先识别出素数
通过十位和百位的识别来将素数反向输出
将反向输出的素数进行素数识别
如素数成立则为反素数进行打印。
否则跳过


#我努力了但出现了奇特的结果None是怎么回事



# 两位数的分解
def lessNum(num):
    num1 = num // 10
    num2 = num % 10

    # return num2, num1
    # 先将他们变成字符串
    a = str(num2) + str(num1)
    # 然后再将倒置后的字符串变回整数int
    a_int = int(a)
    return a_int


# 三位数识别
def moreNum(num):
    num1 = num // 100
    num2 = num // 10 % 10
    num3 = num % 10
    if num1 != num3:
        a = str(num3) + str(num2) + str(num1)
        int_a = int(a)
        if is_prime(int_a) is True:
            return int_a


def is_prime(number):
    divisor = 2
    while divisor <= number / 2:
        if number % divisor == 0:
            return False
        divisor += 1
    return True


def print_prime_numbers(number_of_primes):
    number_of_primes_per_line = 10
    count = 0
    number = 12
    while count < number_of_primes:
        if is_prime(number) is True:
            count += 1
            if number <= 99:
                lessN = lessNum(number)
                if is_prime(lessN) is True:
                    print(lessN, end=" ")
            if number > 99:
                print(moreNum(number), end=" ")
            # print(number, end=" ")
            if count % number_of_primes_per_line == 0:
                print()

        number += 1


def main():
    print("The first 1000 prime number are")
    print_prime_numbers(100)


main()

在这里插入图片描述

2024.08.01
昨天晚上突发奇想是不是没有设置范围

# 两位数的分解
def lessNum(num):
    num1 = num // 10
    num2 = num % 10

    # return num2, num1
    # 先将他们变成字符串
    a = str(num2) + str(num1)
    # 然后再将倒置后的字符串变回整数int
    a_int = int(a)
    return a_int


# 三位数识别
def moreNum(num):
    num1 = num // 100
    num2 = num // 10 % 10
    num3 = num % 10
    if num1 != num3:
        # a = str(num3) + str(num2) + str(num1)
        # int_a = int(a)
        return num
    elif num1 == num3:
        return False


def is_prime(number):
    divisor = 2
    while divisor <= number / 2:
        if number % divisor == 0:
            return False
        divisor += 1
    return True


def print_prime_numbers(number_of_primes):
    number_of_primes_per_line = 10
    count = 0
    number = 12
    while count < number_of_primes:
        if is_prime(number) is True:
            count += 1
            if number <= 99:
                lessN = lessNum(number)
                if is_prime(lessN) is True:
                    print(lessN, end=" ")
            if 999 > number > 99:
                a_t = moreNum(number)
                # print(a_t)
                if is_prime(a_t) is True:
                    print(a_t, end=" ")
            if count % number_of_primes_per_line == 0:
                print()

        number += 1


def main():
    print_prime_numbers(100)


main()

我放弃了对该题的继续,等下次循环再做

在这里插入图片描述

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电饭叔

谢谢各位兄弟们的关注,谢谢破费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值