1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
count=0
hight=0.00008
while True:
count+=1
hight=hight*2
if hight>8848.13:
break
print(count)
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# 规律:1,1,2,3,5,8,13,21......
#按照规律,可以发现,该现象满足斐波那契数列。故,写程序求斐波那契数列第N项值即可
a1=a2=1 #声明a1,a2的初始值为1
s=2 #我们要输出的第N个斐波那契数列值,初始值设置为2
n=int(input('请输入您需要知道的第几个月兔子的总数:'))
count=2 #计数器,初始值为2
if n<=2: #当输入n<=2时
print(1)
else: #n>2时,进入循环
while n>=3:
s=a1+a2
a1,a2=a2,s
count+=1
if count==n: #当计数器值等于输入值是,跳出循环
break
print(s)
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5.
from math import sqrt
# n=int(input('请输入一个数'))
k=int(sqrt(num))
print(num,'=',end='',sep='')
while 1:
for x in range(2,k-1):
if num%x==0:
num=int(num/x)
print(x,'*',end='',sep='')
break
else:
print(num)
break
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
#求最大公约数
m=int(input('请输入正整数m:')) #输入两个正整数
n=int(input('请输入正整数n:'))
# from math import max
# m=24
# n=16
M1=max(m,n) #因为要使用辗转相除法,故选出m,n较大数和较小数
M2=min(m,n)
Y=M1%M2
S=m*n #声明Y是较大数除以较小数的余数
# print(Y)
if Y==0: #当Y为0时,输出最大公约数M2
print(M2)
else: #当Y!=0时,进入循环
while 1:
M1=M2
M2=Y
Y=M1%M2
if Y==0:
break
print('最大公约数是:',M2) #根据辗转相除法的运算过程,得知M2为最大公约数
# 求最小公倍数 最小公倍数=M1*M2/最大公约数
print('最小公倍数是:',S/M2)
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
例如6=1+2+3. 编程 找出1000以内的所有完数。
# from math import sqrt
for x in range(1,1001):
# num=int(sqrt(x))
sum1=0
for y in range(1,x):
s=x%y
if s==0:
sum1+=y
else:
continue
if x==sum1:
print(x)
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前
两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
x=int(input('请输入年份:'))
y=int(input('请输入月份:'))
z=int(input('请输入日:'))
days=0
if x%4==0 and x%100!=0 or x%400==0:
#闰年
if y<=2:
days=31*(y-1)+z
elif y<=8:
num1=int((y-3)/2+0.5)
days=60+30*(y-3)+num1+z
else:
num2=(y-9)//2
days=244+(y-9)*30+z+num2
else:
if y<=2:
days=31*(y-1)+z
elif y<=8:
num1=int((y-3)/2+0.5)
days=59+30*(y-3)+num1+z
else:
num2=(y-9)//2
days=243+(y-9)*30+z+num2
print(days)
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,
加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,
再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
num=int(input('请输入一个四位数:'))
a=num//1000
b=num//100%10
c=num%100//10
d=num%10
a+=5
b+=5
c+=5
d+=5
a=a%10
b=b%10
c=c%10
d=d%10
a,d=d,a
b,c=c,b
num=a*1000+b*100+c*10+d
print(num)