# 完数 # 例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
斐波那契数列
2024-05-12 19:42:03 45 阅读