#【程序16】
#题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
#1.程序分析:利用辗除法。
#2.程序源代码:
n1 =
int(raw_input('plz n1: '))
n2 =
int(raw_input('plz n2: '))
if n1:
temp = n1
n1 = n2
n2 = temp
a = n1
b = n2
while b != 0:
temp = a%b
a = b
b = temp
print a
print n1*n2/a
#【程序17】
#题目:输入一行字符,分别统计出其中英文字母、空
#格、数字和其它字符的个数。
#程序分析:利用while语句,条件为输入的字符不为'\n'.
#程序源代码:
#主要是调用了str的函数判断是不是符合要求
li = raw_input('plz
enter string:')
zm = 0
kg = 0
sz = 0
qt = 0
i = 0
while i <=
len(li)-1:
s = li[i]
i = i+1
if s.isspace():
kg = kg+1
if s.isalpha():
zm = zm+1
if s.isdigit():
sz = sz + 1
qt =
len(li)-zm-kg-sz
print
'zm',zm,'kg',kg,'sz',sz,'qt',qt
#看这么多变量不爽用列表试了试
li = raw_input('plz
enter string:')
k = [0,0,0,0]
i = 0
while i <=
len(li)-1:
s = li[i]
i = i+1
if s.isspace():
k[1] = k[1]+1
if s.isalpha():
k[2] = k[2]+1
if s.isdigit():
k[3] = k[3] + 1
k[0] =
len(li)-k[1]-k[2]-k[3]
print
'zm',k[2],'kg',k[1],'sz',k[3],'qt',k[0]
#【程序18】
#题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数
#字。例如2+22+222+2222+22222(此时共有5个数相加),几个数
#相加有键盘控制。
#程序分析:关键是计算出每一项的值。
#程序源代码:
n =
int(raw_input('plz enter numbers:'))
a =
int(raw_input('plz enter the a:'))
sum1 = 0 #2+22+222 = 200*1+22*2+2*3
m = n
while n > 0 :
n = n-1
sum1 = sum1 + a*(10**n)*(m-n)
print sum1
#【程序19】
#题目:一个数如果恰好等于它的因子之和,这个数
#就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
#程序分析:请参照程序<--上页程序14.
#程序源代码:
li =range(0,100)
for j in range(2,1000): #循环到1000
n = -1
s = j
for i in range(1,j): #因子不大于该数
if j%i == 0:
s = s-i
n = n+1
li[n] = i #用列表放数的因子
if s==0:
print j,'is wanshu'
for k in range(0,n):
print li[k],
print ''
#【程序20】
#题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;
#再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#程序分析:见下面注释
#程序源代码:
s= 100
su = 100 #第一次只有一个来回100
for
j in range(1,11): #k
= range(2,8)=[2, 3, 4, 5, 6, 7]
s = s/2.0
su = su + s*2 #每次落地是来回两次
print s
print su