Python-100-days部分代码实现记录
说明
你好!个人代码记录,欢迎指正。持续更新中…
1.斐波那契数列
题目要求:生成斐波那契数列的前20个数。
说明:斐波那契数列(Fibonacci sequence),又称黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)在《计算之书》中提出一个在理想假设条件下兔子成长率的问题而引入的数列,所以这个数列也被戏称为"兔子数列"。斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …。斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。
个人代码实现:
f_list = [1,1]
for i in range(2,20):
next = f_list[i-1]+f_list[i-2]
f_list.append(next)
print(f_list)
作者给的代码参考:
a = 0
b = 1
for _ in range(20):
a, b = b, a + b
print(a, end=' ')
2.找出10000以内的完美数
说明:完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。例如:6(
6
=
1
+
2
+
3
6=1+2+3
6=1+2+3)和28(
28
=
1
+
2
+
4
+
7
+
14
28=1+2+4+7+14
28=1+2+4+7+14)就是完美数。完美数有很多神奇的特性,有兴趣的可以自行了解。
个人代码实现:(暴力求解)
perfect_number = 0
perfect_list = []
for i in range(2,10001):
for j in range(1,i):
if i%j ==0:
perfect_number += j
if perfect_number == i:
perfect_list.append(i)
perfect_number = 0
print(perfect_list)
作者给的代码参考:
import math
for num in range(2, 10000):
result = 0
for factor in range(1, int(math.sqrt(num)) + 1):
if num % factor == 0:
result += factor
if factor > 1 and num // factor != factor:
result += num // factor
if result == num:
print(num)
3.输出100以内所有的素数。
说明:素数指的是只能被1和自身整除的正整数(不包括1)。
个人代码实现:
import math
prime_number =[]
for x in range(2,101):
a = int(math.sqrt(x))
is_prime = True
for y in range(2,a+1):
if x%y == 0:
is_prime = False
break
if is_prime:
prime_number.append(x)
print(prime_number)
作者给的代码参考:
import math
for num in range(2, 100):
is_prime = True
for factor in range(2, int(math.sqrt(num)) + 1):
if num % factor == 0:
is_prime = False
break
if is_prime:
print(num, end=' ')