1. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
h = 8848.13 * 1000
l = 0.08
i = 0
while l<h:
l *= 2
i += 1
print('需要对折的次数',i)
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
print('----每个月的兔子总数为多少----')
current = 1
pre_1 = 1
pre_2 = 0
n = 7
for x in range(n-1):
current = pre_1 + pre_2
pre_2 = pre_1
pre_1 = current
print(current)
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
print('---正整数分解质因数---')
n = 90
s = n
m = 1
print(n,end='=')
for x in range(2,n):
while n % x == 0:
n = int(n)
# 一次循环过后,n为商,是浮点型,因为range()内都是整数,需要转换成整型
# 判断 商 是否为质数
for a in range(2,n):
if n % a == 0:
break # 若不是质数 结束判断质数循环
else:
print(x) # 最后一个质因数不需要 × 号
m *= x
break # 若是质数说明是最后一个质因数 结束循环
print(x,end='×')
n /= x
m *= x # 累乘质因数
if m == s: # 若质因数乘积等于n 说明已找全质因数
break # 结束循环,之后的不需要计算
else:
print('这是一个质数,没有质因数')
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
print('----求两个数的最大公约数与最小公倍数----')
# i = int(input('请输入一个正整数:'))
# j = int(input('请输入一个正整数:'))
i = 8
j = 12
m = i
n = j
if m < n:
a = m
m = n
n = a
while m % n != 0:
x = m % n
m = n
n = x
print('这两个数的最大公约数是:',x)
a = i * j / x
print('这两个数的最小公倍数是:',a)
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3。 编程 找出1000以内的所有完数
print('---1000以内的所有完数---')
for n in range(2,1001):
s = 1
for x in range(2,n):
if n % x == 0:
s += x
if s == n:
print(n,end=' ')
print()
6. 输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
print('---一年中的第多少天---')
# y = int(input('请输入一个年份:'))
# m = int(input('请输入一个月份:'))
# d = int(input('请输入一个天数:'))
y = 2008
m = 4
d = 5
sum1 = 0
for x in range(1,13):
if x == m:
break
elif x==4 or x==6 or x==9 or x==11:
sum1 += 30
elif x==1 or x==3 or x==5 or x==7 or x==8 or x==10 or x==12:
sum1 += 31
else:
if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0):
sum1 += 29
else:
sum1 += 28
print(sum1+d)
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
print('---加密---')
n = 8787
ge = (n % 10 + 5) % 10
shi = (n % 100 // 10 + 5) % 10
bai = (n // 100 % 10 + 5) % 10
qian = (n // 1000 + 5) % 10
print(ge,shi,bai,qian,sep='')
8. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数。
----------------------- 6 =1x2x3 -> 丑数
----------------------- 2 = 1x2 -> 丑数
----------------------- 7 = 1x7 -> 不是丑数
----------------------- 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
n = 20
m = 0
for x in range(1,100):
if m == n:
print('丑数-->',x-1)
break
while x % 2 == 0:
x /= 2
while x % 3 == 0:
x /= 3
while x % 5 == 0:
x /= 5
if x == 1:
m += 1