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