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