鱼C论坛

 找回密码
 立即注册
查看: 4913|回复: 15

题目35:100万以下有多少个循环质数?

[复制链接]
发表于 2018-11-6 05:04:54 | 显示全部楼层
  1. import math
  2. import itertools
  3. from time import time

  4. lst1 = [2,3]
  5. lst4 = [2,3]
  6. lst_t = []
  7. lst_f = []

  8. def zhi1(n):
  9.     if n%2 == 0: return False
  10.     else:
  11.         for i in lst1:
  12.             if i > math.sqrt(n):
  13.                 break
  14.             if n%i == 0:
  15.                 return False
  16.         if n <1000:
  17.             lst1.append(n)
  18.         return True

  19. def zhi2(n):

  20.     if n%2 == 0: return False
  21.     else:
  22.         for i in lst1:
  23.             if i > math.sqrt(n):
  24.                 break
  25.             if n%i == 0:
  26.                 return False
  27.         return True

  28. for i in range(5,1000):
  29.     zhi1(i)
  30.    
  31. def text(a):
  32.     while a<1000000:
  33.         if zhi2(a):
  34.             yield a
  35.         a += 2

  36. def pailie(number):
  37.     lst2 = []
  38.     while number:
  39.         if number < 10:
  40.             lst2.insert(0,number)
  41.         else:
  42.             s = number%10
  43.             lst2.insert(0,s)
  44.         number //= 10
  45.     return lst2

  46. def ite(lst2):
  47.     lst3 = set()
  48.     for k in lst2:
  49.         if k%2 == 0:
  50.             return False
  51.     for i in range(len(lst2)):
  52.         temp = lst2[i+1:]+lst2[:i+1]
  53.         m = ''
  54.         for j in temp:
  55.             m += str(j)
  56.         lst3.add(int(m))
  57.     return list(lst3)

  58. def shengcheng():
  59.     a = 0
  60.     final = set()
  61.     for i in text(5):
  62.         if i:
  63.             itr = ite(pailie(i))
  64.             if itr:
  65.                 F,T = True,False
  66.                 for j in itr:
  67.                     if lst_f != [] and j == lst_f[0]:
  68.                         lst_f.pop(0)
  69.                         T = True
  70.                     elif lst_t != [] and j == lst_t[0]:
  71.                         a += 1
  72.                         lst_t.pop(0)
  73.                         final.add(i)
  74.                         T = True
  75.                 if T:
  76.                     continue
  77.                 lst_m = []
  78.                 for j in itr:
  79.                     if zhi2(j):
  80.                         lst_m.append(j)
  81.                     else:
  82.                         F = False
  83.                 if not F:
  84.                     for j in lst_m:
  85.                         if j > i:
  86.                             lst_f.append(j)
  87.                 if F:
  88.                     final.add(i)
  89.                     a += 1
  90.                     for j in lst_m:
  91.                         if j > i:
  92.                             lst_t.append(j)
  93.                 lst_f.sort()
  94.                 lst_t.sort()
  95.     print(len(final))

  96. start = time()
  97. shengcheng()
  98. print('消耗%.2f'%(time()-start))
  99. ##print(lst_t)
  100. ##print(lst_f)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-27 05:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表