python中常见的数学问题
目录
python中常见的数学问题
例1:求整数a与b的最小公倍数
#法1:
a=int(input('请输入一个数:'))
b=int(input('请输入一个数:'))
i=1
while True: #循环恒真时执行下列语句
if i%a==0 and i%b==0:
print("最公倍数:",i)
break #第一次找到公倍数时就跳出循环,保证是最小
i+=1 #当前a=5,b=7,i循环35圈
#法2:
a=int(input('请输入一个数:'))
b=int(input('请输入一个数:'))
i=0
while 1:
i+=a #i默认是a的倍数
if i%b==0:
print('最小公倍数:',i)
break
例2:求整数x和y的最大公约数以及最小公倍数
x=int(input('请输入一个数:'))
y=int(input('请输入一个数:'))
lcm=x*y #lcm是最小公倍数
while x%y!=0: #辗转相除法
t=x%y
x=y
y=t
gcd=y #gcd是最小公约数
lcm=lcm // gcd
print('最大公约数:',gcd,'最小公倍数:',lcm)
例3:用户在键盘输入一个四位数整数,需要转换为英文单词输出,如:输入1024,One Zero Two Four
t=1000
num=int(input('请输入一个四位数整数:'))
if num>=1000 and num<10000:
while t>0:
if num//t%10==0:
print('Zero',end=' ')
elif num//t%10==1:
print('One',end=' ')
elif num//t%10==2:
print('Two',end=' ')
elif num // t % 10 ==3 :
print('Three', end=' ')
elif num//t%10==4:
print('Four',end=' ')
elif num//t%10==5:
print('Five',end=' ')
elif num//t%10==6:
print('Six',end=' ')
elif num//t%10==7:
print('Seven',end=' ')
elif num//t%10==8:
print('Eight',end=' ')
elif num//t%10==9:
print('Nine',end=' ')
t=t//10
else:
print('请输入四位正整数:')
#整数由左向右拆分
例4:Fibonacci数列,古典数学问题:有一对兔子,从出生后第三个月都生一对兔子,小兔子到第三个月每个月有都生一对兔子,假设兔子不死,问每月兔子数字规律:1 1 2 3 5 8 13 …..a1=0
a1=1
a2=1
for i in range(6):
print(a1,a2,end=' ')
a1=a1+a2
a2=a1+a2
#当前项等于前两项之和
例5:计算Fibonacci数列中大于t的最小值,如:t=6 输出8
a1=0 a2=1 a3=1
t=int(input("请输入一个正整数:"))
a1=0
a2=1
a3=1
while a3<=t:
a1=a2
a2=a3
a3=a1+a2
print('大于',t,'的Fibonacci数列中的最小值是:',a3)
例6:有一张足够大的纸,厚度为0.09mm,问对折多少次其厚度会超过珠穆朗玛峰的高度(8848m)
t=0
h=0.09e-3 #纸的厚度,单位统一为米
while 1:
h=h*2 #对折,即厚度乘以2
t=t+1 #对折次数
if h>8848:
break
print('对折次数:',t)
例7:爱心斯坦阶梯问题,有多级阶梯,每步跨两阶余1阶,每步跨3阶余2阶,每步跨5阶余4阶,每步跨6阶余5阶,每步跨7阶都正好到顶,问该阶梯一共多少阶?
i=7
while 1:
if i%2==1 and i%3==2 and i%5==4 and i%6==5 :
break
i+=7
print('阶梯总数:',i)
例8:百钱买百鸡问题,鸡翁值钱伍,鸡母值钱叁,鸡雏叁值壹钱,百钱买百鸡,鸡翁,鸡母,鸡雏各几何?
for cocks in range(101):
for hens in range(101):
for chicks in range(101):
if cocks+hens+chicks==100 and cocks*5+hens*3+chicks//3==100 and chicks%3==0:
print('公鸡',cocks,'只','母鸡=',hens,'只','小鸡=',chicks,'只')
例9:搬砖问题:36人搬36块砖,男搬4,女搬3,两个小孩抬一块砖,一次性搬完,需要男,女,小孩各多少人?
for m in range(10):
for w in range(14):
for c in range(73):
if m+w+c==36 and m*4+w*3+c//2==36 and c%2==0:
print('男=',m,'人','女=',w,'娃=',c,'人')
例10:猴子偷桃,一天吃一半还要多吃一个,第七天吃完,问偷桃总数?
n=0
for i in range(7):
n=(n+1)*2
print('偷桃总数:',n)
打印图形
.例1:打印如下图形:
h=int(input('请输入图形高度:'))
for i in range(4):
for j in range(0,4-i-1):
print(' ',end='')
for k in range(0,2*i+1):
print('*',end='')
print()
例2 :
for i in range(7):
for j in range(i):
print(' ',end='')
for k in range(2*(7-i)-1,0,-1):
print('*',end='')
print()