斐波那契数列、完美数、100以内素数···

今日总结(三道题)

1.生成斐波那契数列的前20个数。
说明:斐波那契数列(Fibonacci sequence),又称黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)在《计算之书 中提出一个在理想假设条件下兔子成长率的问题而引入的数列,所以这个数列也被戏称为"兔子数列"。
斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,
形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …。
斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。

def fb(n):        #求单个的斐波那契数列
    if n == 1 or n == 2:
        return 1
    else:
        result = fb(n-1) + fb(n-2)
        return result
    

for i in range(1,21):#循环20次
    result1 = fb(i)   #列出前20个斐波那契数列
    print(result1)

2.找出10000以内的完美数。 说明:完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。
例如:6( 6 = 1 + 2 + 3 6=1+2+3 )和28( 28 = 1 + 2 + 4 + 7 + 14 28=1+2+4+7+14 )就是完美数。
完美数有很多奇的特性,点击跳转深入了解。

import math
def perfect(num):
    sums = 0
    for factor in range(1,int(math.sqrt(num))+1):
        if num % factor == 0:
            sums += factor
            if factor >1 and factor != num // factor:
                sums += num // factor
    if sums == num:
        return True
    else:
        return False


def perfect_num(a,b):
    if a > b:
        a,b = b,a
    for number in range(a,b + 1):
        if perfect(number):
            print(number)


result = perfect_num(1,1000)
print(result)

此题参考此大神助我理解(虽然还是不是很透彻)

3.输出100以内所有的素数。
说明:素数指的是只能被1和自身整除的正整数(不包括1)

# 输出100以内所有的素数。
# 说明:素数指的是只能被1和自身整除的正整数(不包括1)。

# def isPrime(num):#判断是否为素数
#
#
#     if num <= 1:#1不是质数
#         return False
#
#     num1 = 2
#     while num1 * num1 <= num:# 其他数字相乘可以得到这个数字
#         if num % num1 == 0:#如果输入的数字可以被其他数字整除,也不是素数
#             return False
#         num += 1
#     return True
# 以上也为素数判断


from math import sqrt

def isPrime(num):
    if num == 1:
        return False
    for i in range(2, int(sqrt(num))+1): #如果输入的数字可以被其他数字整除,也不是素数
        if num % i == 0:
            return False
    return True


for i in range(1, 100):#循环输出
    if isPrime(i):
        print(i)

推荐一篇说的比较详细的,也是有所启发,感谢
还没办法完全理解题目以及答案。。。
香菇。。

原创文章 27 获赞 34 访问量 2618

猜你喜欢

转载自blog.csdn.net/weixin_46313446/article/details/105576063
今日推荐