1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
thickness=0.08
time=0
while thickness < 8848130:
time+=1
thickness*=2
thickness=thickness//1+1
print(time)
2.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
每月兔子的数量为2,2,4,6,10,16,26,42.....,为斐波那契数列。
n=int(input('请输入月份:'))
n1=0
n2=2
if n ==1:
print('2')
for x in range(2,n+1):
current=n1+n2
n1=n2
n2=current
print(current)
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num=int(input('输入数字:'))
print(num,'=',end='')
for x in range(2,num+1):
while num%x==0:
print(x,end='*')
num=num/x
print()
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m=int(input('请输入m:'))
n=int(input('请输入n:'))
if m<n:
n,m=m,n
for x in range(m,m*n+1):
if x%n==0 and x%m==0:
print(x)
break
最小公倍数
num=1
m=int(input('请输入m:'))
n=int(input('请输入n:'))
if m<n:
n,m=m,n
for x in range(2,n+1):
if n%x==0 and m%x==0:
num=x
else:
print(num)
最大公约数
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程,找出1000以内的所有完数.
sum1=0
for x in range(2,1001):
for a in range(1,x):
if x%a==0:
sum1+=a
if sum1==x:
print(x)
sum1=0
6.输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
year=int(input('请输入年份:'))
month=int(input('请输入月份:'))
day=int(input('请输入当月的第几天:'))
day1=0
day2=0
for a in range(1,month):
if a<=7:
if a ==2:
if year%4==0:
day1=29
else:
day1=28
elif a%2==0:
day1=30
else:
day1=31
day2+=day1
if a>=8:
if a%2==0:
day1=31
else:
day1=30
day2+=day1
print(day2+day)
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
n=int(input('请输入:'))
a=(n//1000+5)%10
b=(n//100%10+5)%10
c=(n//10%10+5)%10
d=(n%10+5)%10
a,d=d,a
b,c=c,b
num = a*1000+b*100+c*10+d
print(num)