1000以内的完全数有多少个,1000以内性价比最高的无人机

首页 > 教育培训 > 作者:YD1662023-05-22 00:10:35

1、完数的定义【引用百度百科对完数的定义】:

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数

2、先定义一个函数,用于判断一个数是否是完数。然后再用for循环进行函数调用

# 判断一个数是否是完数 def fun1(number): b = [] for i in range(1, number): if number % i == 0: b.append(i) if sum(b) == number: print("%d = " % number, end="") for j in b: print(j, end=" ") print("\r") # 进行循环判断 for i in range(1, 1000): fun1(i)

执行结果如下:

6 = 1 2 3

28 = 1 2 4 7 14

496 = 1 2 4 8 16 31 62 124 248

问题来了,在循环遍历列表时,打印出列表中的每个元素后,加了一个 " ",在获取列表最后一个元素时。“ ”自然而然的也打印出来了,因此需要寻找一种方法,不打印最后的“ ”,于是可以判断列表的长度,打印到最后一个元素时,直接输出,不打印“ ”。但是这样做会影响程序的执行效率,最后再比较一下。

3、修改后的完整程序

# 判断一个数是否是完数 def fun1(number): b = [] for i in range(1, number): if number % i == 0: b.append(i) if sum(b) == number: print("%d = " % number, end="") for j in b: if b.index(j) != len(b) - 1: print(j, end=" ") else: print(j) # 进行循环判断 for i in range(1, 1000): fun1(i)

程序的运行结果:

6 = 1 2 3

28 = 1 2 4 7 14

496 = 1 2 4 8 16 31 62 124 248

这样程序就比较完美了

4、程序的执行时间:【为啥?为啥?为啥?哪位朋友帮忙答疑解惑:在for中调用if进行判断的执行时间为啥会短】

第一组数据:10000以内

0:00:02.215864 在for循环中调用if判断

0:00:02.313698 在for循环中不调用if判断

第二组数据:100000以内

0:04:37.690211 在for循环中调用if判断

0:06:05.017396 在for循环中不调用if判断

1000以内的完全数有多少个,1000以内性价比最高的无人机(1)

python实现寻找完数

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.