python.完数和斐波那契数列

# 完数


# 例3-24 找出1000以内所有的完数

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

s = 0  #这个s = 0 不能放在这
for i in range(2,1000):
    s = 0  # 应该放在外层循环里,内层循环外
    for j in range(1,i):
        if i % j == 0:
            s = s + j
    if s == i:
        print(i,end=' ')
# 6 28 496


# 斐波那契数列


# 例3-26 斐波那契数列
# 需要设置三个变量,设置两个不太够,两项的和需要第三个变量给接住
# 很重要的是 要注意 放置的顺序

i = 1
j = 1
c = 2
n = eval(input('请输入项数:'))
print('{:>5}{:>5}'.format(i,j),end=' ')   # 因为你先把1,1给单独拿出来了,所以要先输出来
for m in range(3,n+1):
    k = i + j       # 因为1,1先拿出来了,所以应该直接写第三个数,不能先交换
    c = c + 1       # 把每一个数完成好后再进行交换,不要一上来就先交换
    print('{:>5}'.format(k),end=' ')
    if c % 4 == 0:
        print(' ')
    i = j      # 然后再进行交换 这个顺序也很重要,要先确定i(即第一位上的数)
    j = k      # 然后再确定j(即第二位上的数)


 #    1    1     2     3  
 #    5     8    13    21  
 #   34    55    89   144  
 #  233   377   610   987  
 # 1597  2584  4181  6765  




# 例6-13 递归法求1-20的斐波那契数列

def fibo(i):
    if i == 1 or i == 2: return 1
    else: return fibo(i-1) + fibo(i-2)

for i in range(1,20+1):
    print('{:<8}'.format(fibo(i)),end='' if i % 5 != 0 else '\n')

# 1       1       2       3       5
# 8       13      21      34      55
# 89      144     233     377     610
# 987     1597    2584    4181    6765
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值