首先使用之前的确认素数的函数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()
我放弃了对该题的继续,等下次循环再做