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