在学习期间,学到了循环,写了完数的题目如下:from time import timestart = time()
for num in range(1, 10001):
my_sum = 0
for i in range(1, num):
if num % i == 0:
my_sum += i
if num == my_sum:
print(num)
end = time()
print((end-start), "秒")
进行优化后的代码:
from time import time
from math import sqrt
start = time()
for num in range(2, 10001):
my_sum = 1
for i in range(2, int(sqrt(num))+1):
if num % i == 0:
my_sum += i
if i != num // i:
my_sum += num // i
if num == my_sum:
print(num)
end = time()
print((end-start), "秒")
可以看到优化后的代码,运行时间仅为未优化的代码的1.3%,从而提高了效率
整体代码说明:优化后的代码调用了系统的time()函数,进行计算运行时间,使用了for循环,range进行循环次数遍历,,里面目前使用了math函数里面的sqrt,是一个开平方方法,进行开放判断,因为完数只能被本身和1整除,当然1除外。使用此方法的调用减少了循环的次数,提高了运行的时间。思路:完数的判断方法就是计算1到本身之间的所有数字能不能被整除,如果不能的话则为完数,进行开方之后,缩短了循环的次数,简短了时间。
|
|