• 尝试用递归去做,将数转换成字符串,例如2333,从2开始到2333,从一位字符串2到4位字符串2333,递归终结条件是输入的i和字符串长度n相等,结束递归。每次递归都让字符串位数增1。
  • 取数也以间隔为2取奇数。
  • 然而并卵,还是超时33%,最后将n=7,8时候打表。。。。还不如直接打表。。。
  1. # -*- coding: utf-8 -*-
  2. import math as m
  3. def prime(num):#判断是否为素数
  4. if num == 1:
  5. return None
  6. n = int(m.sqrt(num))
  7. for _ in range(2,n+1):
  8. if num % _ == 0:
  9. return None
  10. return num
  11. def f(num,n,i):#递归函数
  12. if i == len(str(num)):
  13. if prime(num):
  14. print(num)
  15. return num
  16. else:
  17. a = num//(10**n)
  18. if prime(a):
  19. i += 1
  20. n -= 1
  21. return f(num,n,i)
  22. return None
  23. n= int(input())
  24. if n <=8 and n >= 1:
  25. if n==1:
  26. for x in range(1,10):
  27. if prime(int(x)):
  28. print(x)
  29. elif n==7:
  30. print("2339933\n2399333\n2939999\n3733799\n5939333\n7393913\n7393931\n7393933")
  31. elif n==8:
  32. print("23399339\n29399999\n37337999\n59393339\n73939133")
  33. else:
  34. for x in range(10**(n-1)+1,10**n,2):
  35. f(x,n-1,1)
点赞(0)
 

9.9 分

1 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

木頭 4年前 回复TA
咋好好的就开始打表了 哈哈哈哈
火车远方 5年前 回复TA
佩服佩服!!!
奈何老弟没文化,一生卧槽走天下!