题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问20个月后兔子总数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
# 斐波那契数列
# 迭代
def fab(n):
n1 = 1
n2 = 1
n3 = 1 #设置默认值为1
if n < 1:
print("输入错误!")
return -1
while (n-2) > 0:
n3 = n1 + n2
n1 = n2
n2 = n3
n -= 1
return n3
result = fab(20)
if result != -1:
print("小兔崽子共有 %d 只" % (result * 2))
# 递归
def fab(n):
if n < 1:
print("输入错误!")
return -1
if n == 1 or n == 2:
return 1
else:
reutrn fab(n-1) + fab(n-2)
result = fab(20)
if result != -1:
print("小兔崽子共有 %d 只" % (result * 2))
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
def is_prime(num):
middle = num // 2 #取中间数,如果不能被整除,就取整数
for i in range(2,middle): #从2到中间数,只要能被整除,就说明不是素数
if num%i == 0:
return False
return True
count = 0
for i in range(101,200):
if is_prime(i) == True:
count += 1
print(i)
print('共有素数: %d 个' % count)