【基础入门题】2021.11.05
求五位的即10000~99999范围内的质数,并且又是回文数(即从个位开始倒置值不变,如3、11、131......)
编程语言:包括但不限于Python
题目来源:派森特给站每日刷题频道
————————————————
方法一:数字转字串判断回文
def isPrime(n): if n==1: return False for i in range(2,int(n**0.5)+1): if n%i==0: return False return True def isPalindrome(n): t = str(n) if t==t[::-1]: return True return False def PalinPrime(n): pp = [] count = 0 for i in range(10**(n-1),10**n): if isPalindrome(i) and isPrime(i): count += 1 pp.append(i) print(f'{n}位质回文数的个数:{count}') for i in range(count): if (i+1)%10: print(pp[i],end='\t') else: print(pp[i],end='\n') PalinPrime(5) ''' 5位质回文数的个数:93 10301 10501 10601 11311 11411 12421 12721 12821 13331 13831 13931 14341 14741 15451 15551 16061 16361 16561 16661 17471 17971 18181 18481 19391 19891 19991 30103 30203 30403 30703 30803 31013 31513 32323 32423 33533 34543 34843 35053 35153 35353 35753 36263 36563 37273 37573 38083 38183 38783 39293 70207 70507 70607 71317 71917 72227 72727 73037 73237 73637 74047 74747 75557 76367 76667 77377 77477 77977 78487 78787 78887 79397 79697 79997 90709 91019 93139 93239 93739 94049 94349 94649 94849 94949 95959 96269 96469 96769 97379 97579 97879 98389 98689 '''
方法二: 不转字符串判断回文
def numReverse(n): m = 0 while n//10>0: m = m*10+n%10 n //= 10 return m*10+n def isPrime(n): if n==1: return False for i in range(2,int(n**0.5)+1): if n%i==0: return False return True def PalinPrime(n): pp = [] count = 0 for i in range(10**(n-1),10**n): if i==numReverse(i) and isPrime(i): count += 1 pp.append(i) print(f'{n}位质回文数的个数:{count}') for i in range(count): if (i+1)%10: print(pp[i],end='\t') else: print(pp[i],end='\n') PalinPrime(5)