|
发表于 2017-8-13 12:36:02
|
显示全部楼层
本帖最后由 意外惊喜sad 于 2017-8-14 18:31 编辑
新人来报道~
下面这个是修改过之后的程序
- print('==================求汉明数个数========================')
- import time
- import numpy as np
- #定义全局变量
- x = input('请输入最大值中10的幂指数:')
- H = [1]
- x = int(x)
- y = 430 #调试参数,保证2**y>10**100
- T1 = list(np.logspace(1,y,y,base=2))
- T2 = list(np.logspace(1,y,y,base=3))
- T3 = list(np.logspace(1,y,y,base=5))
- #定义新函数f1(),判断每个列表中符合要求的数并放入列表H中
- def f1(X) :
- for i in range(0,y) :
- if X[i] <=10**x :
- H.append(X[i])
- else :
- break
- #定义新函数f2(),每个列表中的元素两两相乘,将符合要求的数放入H中
- def f2(X,Y):
- for a in X :
- if a > 10**x :
- break
- for b in Y :
- if b > 10**x :
- break
- h = a*b
- if h <= 10**x :
- H.append(h)
- else :
- break
- #运行程序主体
- start = time.clock()
- f1(T1)
- f1(T2)
- f1(T3)
- f2(T1,T2)
- f2(T1,T3)
- f2(T2,T3)
- #三三相乘,将符合要求的数放入H中
- for a in T1 :
- if a > 10**x :
- break
- for b in T2 :
- if b > 10**x :
- break
- for c in T3 :
- if c > 10**x :
- break
- h = a*b*c
- if h <=10**x :
- H.append(h)
- else :
- break
- print('10**',x,'以内包含的汉明数个数:',len(H))
- end = time.clock()
- print ('运行时间:',end-start,'s')
复制代码
运行结果:
- ==================求汉明数个数========================
- 请输入最大值中10的幂指数:8
- 10** 8 以内包含的汉明数个数: 1105
- 运行时间: 0.03742721926610512 s
- >>>
- ==================求汉明数个数========================
- 请输入最大值中10的幂指数:2
- 10** 2 以内包含的汉明数个数: 34
- 运行时间: 0.02984148582876169 s
- >>>
- ==================求汉明数个数========================
- 请输入最大值中10的幂指数:100
- 10** 100 以内包含的汉明数个数: 1697190
- 运行时间: 27.276055697650705 s
复制代码 |
评分
-
查看全部评分
|