1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
i=0
a=1
while True:
a*=2
i+=1
if a*0.08>8848.13*1000:
print(i-1)
break
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
n=int(input())
a=1
b=1
for x in range(n-2):
a,b=b,a+b
print(b*2)
- 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
def fun1(num):
print('%d=' % num, end='')
while num > 1:
for i in range(2, num + 1):
if num % i == 0:
num = int(num / i)
if num == 1:
print('%d' % i, end='')
else:
print('%d*' % i, end='')
break
print()
fun1(90)
- 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
def fun1(x,y,):
if x > y:
x,y=y,x
for n in range(x,0,-1):
if y%n==0 and x%n==0:
print("最大公约数是%d"%n,end='')
break
print('最小公倍数是%d'%int(x*y/n))
fun1(6,4)
- 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for num in range(1,1001):
sum=0
for x in range(1,num):
if num%x == 0:
sum+=x
if sum == num:
print("%d是一个完美数"%num)
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
def fun1(year,moth,day):
day1=[31,28,31,30,31,30,31,31,30,31,30,31]
sum=0
if year%4==0 and year%100!=0 or year%400==0:
for x in range(moth-1):
sum+=day1[x]
print("这天是这年的第%d天"%int(sum+1+day))
else:
for x in range(moth - 1):
sum += day1[x]
print("这天是这年的第%d天"%int(sum+day))
fun1(2019,2,17)
- 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
def fun1(num):
l=list(str(num))
for x in range(len(l)):
l[x] =(int(l[x]) + 5) % 10
l[0],l[-1]=l[-1],l[0]
l[1],l[2]=l[2],l[1]
print(l)
fun1(1234)
-
获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数
6 =1* 2*3 -> 丑数
2 = 1*2 -> 丑数
7 = 1*7 -> 不是丑数
1, 2, 3, 4, 5, 6, 8,9,10, 12 ….
def find_nun(k):
count=0
n=1
while True:
if isnum(n):
count += 1
if count == k:
print('第%d个丑数是%d'%(k,n))
else:
n += 1
def isnum(n):
while n%2==0:
n/=2
while n%3==0:
n/=3
while n%5==0:
n/=5
if n==1:
return True
else:
return False
find_nun(8)