当前位置:   article > 正文

回文素数(回文质数)-Python123编程题库答案-Python从入门到精通挑战台

回文素数

回文素数

类型:函数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬


描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。 用户输入一个正整数 n , 请你在一行内输出从小到大排列的的前n个回文素数,数字后面用一个空格进行分隔。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输入一个正整数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

符合要求的回文素数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

  1. 输入:10
  2. 输出:2 3 5 7 11 101 131 151 181 191

标准答案

  1. def is_prime(n):
  2. """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False
  3. 减小判定区间,减少循环次数,提升效率。
  4. """
  5. if n < 2:
  6. return False # 0、1、负数以及偶数都不是素数
  7. for i in range(2, int(n ** 0.5) + 1):
  8. if n % i == 0: # 能被2到其根号n之间的整数整除的数不是素数
  9. return False
  10. else:
  11. return True # for循环正常结束,未遇到return的数是素数
  12. def palindromic(num):
  13. """接收一个数字为参数,判定其是否为回文数,返回布尔值。"""
  14. if str(num) == str(num)[::-1]:
  15. return True
  16. else:
  17. return False
  18. def output_prime(num):
  19. """接收一个正整数num为参数,在一行中从小到大输出前num个回文素数。
  20. 函数无返回值
  21. """
  22. i = 2 # 从最小的素数2开始测试
  23. count = 0 # 计数器置0
  24. while True: # 无限循环
  25. if palindromic(i) and is_prime(i): # 先判断回文再判断素数,效率高
  26. print(i, end=' ') # i为回文素数时输出i,输出后不换行
  27. count = count + 1 # 每发现一个回文素数计数增加1
  28. if count == num: # 如果找到回文素数数量与要求数量相同时
  29. break # 结束循环
  30. i = i + 1 # 测试下一个数字
  31. if __name__ == "__main__":
  32. n = int(input())
  33. output_prime(n)

我的答案

  1. def isprime(n):
  2. if n<2:
  3. return False
  4. for i in range(2,int(n**0.5)+1):
  5. if n%i == 0:
  6. return False
  7. else:
  8. return True
  9. def ispal(n):
  10. if str(n) == str(n)[::-1]:
  11. return True
  12. else:
  13. return False
  14. n = int(input())
  15. num,a = 2,0
  16. while a<n:
  17. if ispal(num) and isprime(num) :
  18. print(num,end=' ')
  19. a += 1
  20. num += 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/512238
推荐阅读
相关标签
  

闽ICP备14008679号