|
楼主 |
发表于 2017-12-13 11:05:20
|
显示全部楼层
本帖最后由 payton24 于 2017-12-13 11:10 编辑
另外,我用简单程序测算了一下,使用生成器和一般的for循环的运行时间都是差不多的。能指点一下吗?
代码一如下:
- import time
- import sys
- time_start = time.time()
- '''------------------------------------------------------------'''
- import math
- def is_prime(number):
- if number > 1:
- if number == 2:
- return True
- if number % 2 == 0:
- return False
- for current in range(3, int(math.sqrt(number) + 1), 2):
- if number % current == 0:
- return False
- return True
- return False
-
- def main():
- sum=0
- ## nums = (each for each in range(2000000))
- nums =range(2000000)
- for i in nums:
- if is_prime(i):
- sum +=i
- print(sum)
- main()
- '''------------------------------------------------------------'''
- time_end = time.time()
- print('返回结果花费的时间: %s' % (time_end - time_start))
- print('返回结果占用内存大小:%s' % sys.getsizeof(main()))
复制代码
IDLE结果为:
======================== RESTART: F:\Python-Ex\aa.py ========================
142913828922
返回结果花费的时间: 9.932051420211792
142913828922
返回结果占用内存大小:16
>>>
代码二如下:
- import time
- import sys
- time_start = time.time()
- '''------------------------------------------------------------'''
- import math
- def is_prime(number):
- ## print('num %d' %number)
- if number > 1:
- if number == 2:
- return True
- if number % 2 == 0:
- return False
- for current in range(3, int(math.sqrt(number) + 1), 2):
- if number % current == 0:
- return False
- return True
- return False
- def get_primes(number):
- while True:
- if is_prime(number):
- yield number
- number +=1
-
- def solve():
- sum=2
- for next_prime in get_primes(3):
- if next_prime < 2000000:
- sum +=next_prime
- else:
- print(sum)
- return
- if __name__ == '__main__':
- solve()
- '''------------------------------------------------------------'''
- time_end = time.time()
- print('返回结果花费的时间: %s' % (time_end - time_start))
- print('返回结果占用内存大小:%s' % sys.getsizeof(solve()))
复制代码
IDLE结果为:
======================== RESTART: F:\Python-Ex\aa.py ========================
142913828922
返回结果花费的时间: 9.714050531387329
142913828922
返回结果占用内存大小:16
>>> |
|