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