Python3 100例 | 菜鸟教程 习题链接
题11:斐波那契数列
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21…
分析:前面两项加和等于第三项
分析一:第s月后每个月的兔子总数为多少对?
def animalNum(s):
f1 = 1
f2 = 1
if s< 3:
print(f1, f2, sep='\t', end='\t')
print(f1, f2, sep='\t', end='\t')
for i in range(1,s-1):
f3 = f1 + f2
print(f3, sep='\t', end='\t')
f1 = f2
f2 = f3
animalNum(8)
分析二:直接输出前N项数列
f1 = 1
f2 = 1
for i in range(1,55): #55并非代表第55个月,而是随意的一个数字
print(f1, f2, sep='\t', end='\t')
f1 = f1 + f2
f2 = f1 + f2
题12:素数
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
分析:
方法一:定义法,遍历除数
方法二:遍历一半的除数,如果两个整数(非1非除数自身)相乘得到除数,那么这两个数之一必定小于除数/2.
方法三:遍历根号下的除数,如果两个整数(非1非除数自身)相乘得到除数,那么这两个数之一必定小于根号下的除数.
l = []
for i in range(100, 201):
k = True
for j in range(2, i):
if i%j == 0:
k = False
break
if k == True :
l.append(i)
print(l)
l = []
for i in range(100, 201):
k = True
for j in range(2, i//2+1):
if i%j == 0:
k = False