##【程序11】 ## 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 ## 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? def fibo(num): if num>2: return fibo(num-1)+fibo(num-2) else: if num ==1 or num ==2: return 1 num= int (raw_input("input the month:")) print "There are %d pairs rabbits in month %d"%(fibo(num),num)
##【程序12】 ## 题目:判断101-200之间有多少个素数,并输出所有素数。 import math def isprim(num): k = math.floor(math.sqrt(num)) for i in range(2,k+1): if num%i==0: return False return True counter=0 for j in range(101,201): if isprim(j): print j counter=counter+1 print "There are %d prim numbers between 101 and 200"%counter
##【程序13】 ## 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 ## 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 counter=0 for i in range(100,1000): a=i/100 b=(i-100*a)/10 c=i-100*a-10*b if i== a**3+b**3+c**3: counter=counter+1 print i print "There are %d numbers."%(counter)
##【程序14】90 ## 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 ## ##程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: ##(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 ##(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, ## 重复执行第一步。 ##(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 import math def isprim(num): k = int(math.floor(math.sqrt(num))) for i in range(2,k+1): if num%i==0: return False return True factor=[] num=int(raw_input("input a num:")) flag = int(math.floor(math.sqrt(num))) j=2 while j<(flag+1): if num%j==0 and isprim(j): factor.append(j) num=num/j j=2 else: j=j+1 print factor
# -*- coding: cp936 -*- ##【程序15】 ## 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, ## 60分以下的用C表示。 def score(i): if i>=90: print "A" else: if 60<=i<=89: print "B" else: if 60>i: print "C" num=float(raw_input("input your score:")) score(num)
##【程序16】 ## 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 a=int(raw_input("input an integer:")) b=int(raw_input("input another interger:")) def gcd_lcm(a,b): if a<b: a,b=b,a tempa=a tempb=b while b!=0: a,b=b,a%b print "The GCD is %d"%(a) print "The LCM is %d"%(tempa*tempb/a) gcd_lcm(a,b)
# -*- coding: cp936 -*- ##【程序17】 ## 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 import string s=str(raw_input("input a string:")) def counter(s): letter=0 space=0 digit=0 others=0 for i in range(len(s)): if s[i] in string.letters: letter=letter+1 if s[i] in string.whitespace: space=space+1 if s[i] in string.digits: digit=digit+1 others=len(s)-letter-space-digit print "There are :" print "%d letters"%(letter) print "%d space"%(space) print "%d digits"%(digit) print "%d other symbols"%(others) counter(s)