import math
def is_palindrome(number):
number_list = []
number_repeat = number
while True:
number_list.append(number_repeat % 10)
if number_repeat / 10 < 1:
break
else:
number_repeat = number_repeat // 10
reserve = 0
n = 1
for i in number_list[::-1]:
reserve += i * n
n = n * 10
if reserve == number:
return True
else:
return False
def is_prime(number):
if number == 1:
return False
i = 2
n = 0
for j in range(2, int(number / 2)+1):
if number % j == 0:
n += 1
if n == 0:
return True
else:
return False
def main():
number_palindrome_primes = 100
n = 0
i = 1
while n < number_palindrome_primes:
if is_palindrome(i) and is_prime(i):
print(format(i, "3"), end=" ")
n += 1
i += 1
if n % 10 == 0:
print()
else:
i += 1
continue
main()
反素数是指一个将其逆向拼写后也是 一个素数的非回文数
def is_primes(number):
n = 0
for i in range(2, int(number / 2) + 1):
if number % i == 0:
n += 1
if n == 0:
return True
else:
return False
def not_palindrome(number):
number_list = []
number_repeat = number
while True:
number_list.append(number_repeat % 10)
if number_repeat / 10 < 1:
break
else:
number_repeat = number_repeat // 10
reverse = 0
n = 1
for i in number_list[::-1]:
reverse += i * n
n = n * 10
if reverse == number:
return False
else:
return True
def main():
NUMBER_LIMITED = 100
n = 0
i = 1
while n < NUMBER_LIMITED:
if is_primes(i) and not_palindrome(i):
print(format(i, "3"), end=" ")
n += 1
i += 1
if n % 10 == 0:
print()
else:
i += 1
continue
main()
如果一个素数可以写成 2 ** (p-1)的形式,其中p是某个正整数,那么这个数就被称作梅森素数
import math
def is_prime(number):
n = 0
for i in range(2, int(number / 2)+1):
if number % i == 0:
n += 1
if n == 0:
return True
else:
return False
def is_mason(number):
n = 0
for p in range(1, 32):
index = 2 ** p - 1
if number == index:
n += 1
if index > number:
if p == 31:
return p
break
if n != 0:
return 1
else:
return 0
def main():
for num in range(1, 99999):
if is_prime(num):
if is_mason(num):
print(num)
if is_mason(num) == 31:
break
main()
双素数是指一对差值为2的素数
import math
def is_prime(number):
n = 0
for i in range(2, int(number / 2)+1):
if number % i == 0:
n += 1
if n == 0:
return number
else:
return 0
def main():
for i in range(2, 1001):
if is_prime(i):
first_number = is_prime(i)
for j in range(2, 1003):
second_number = is_prime(j)
if second_number - first_number == 2:
print(str(first_number)+","+str(second_number))
if second_number - first_number > 2:
break
main()