目录

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:打印如下图形:

https://i-blog.csdnimg.cn/blog_migrate/e0e9fb97d032e979c45d712f42d96459.png

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()