1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
a = 0.08 / 1000
count = 0
while a < 8848.13:
a *= 2
count += 1
print(count)
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
n = int(input('请输入月份:'))
num1 = 1
num2 = 1
if n <= 2:
num = 1
sum1 = num * 2
print('第',n,'月的兔子数量为:',num,'对',sum1,'只')
else:
for i in range(3,n+1):
num = num1 + num2
num1 = num2
num2 = num
sum1 = num * 2
print('第',n,'月的兔子数量为:',num,'对',sum1,'只')
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
n = int(input('请输入一个正整数:'))
print(n,'=',end='')
while n > 1:
for i in range(2,n+1):
if n % i ==0:
n = int(n / i)
if n == 1:
print(i,end='')
else:
print(i,'*',end='')
break
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
辗转相除法:有a,b(a>b),求最大公约数。若a%b=0,则最大公约数为b;若a%b!=0…r1,继续用b%r1; 若b%r1=0,则最大公约数为r1;若b&rq!=0…r2,则继续用r1&r2,直到求得余数为0的那个除数;最小公倍数=两个数的乘积除最小公倍数=a * b / r
a = int(input('请输入一个正整数:'))
b = int(input('请再输入一个正整数:'))
if a < b:
c = b
b = a
a = c
a1 = a
b1 = b
while True:
if a % b == 0:
print('最大公约数为:',b)
break
while a % b != 0:
k = a
a = b
b = k % b
break
d = int(a1 * b1 / b)
print('最小公倍数为:',d)
5.一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
需注意,该题的因子是值这个数除自身以外的所有因子(包括1),并不是指乘积因子,如28 = 1+2+4+7+14
for i in range(2,1001):
s = i
for j in range(1,i):
if i % j ==0:
s -= j
if s == 0:
print(i)
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来, 然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
sum1 = 0
sum2 = 0
while True:
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
day = int(input('请输入日期:'))
months = [31,28,31,30,31,30,31,31,30,31,30,31]
if month > 12 or day > 31:
print('输入数据有误,请重新输入')
break
else:
if (year % 4 ==0 and year % 100 != 0) or (year % 400 == 0):
if month > 2:
for i in range(0,month-1):
sum1 += months[i]
sum2 = sum1 + day + 1
if month <= 2:
for i in range(0,month-1):
sum1 += months[i]
sum2 = sum1 + day
else:
for i in range(0,month-1):
sum1 += months[i]
sum2 = sum1 + day
print(year,'年',month,'月',day,'日','是当年第',sum2,'天')
break
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换, 第二位和第三位交换。求输入的四位整数加密后的值
a b c d
(a+5)%10 (b+5)%10 (c+5)%10 (d+5)%10
(d+5)%10 (c+5)%10 (b+5)%10 (a+5)%10
n = int(input('请输入需要传递的数据:'))
# 取出每个数
n1 = n // 1000
n2 = n //100 % 10
n3 = n //10 % 10
n4 = n % 10
# 加密
a = (n1 + 5) % 10
b = (n2 + 5) % 10
c = (n3 + 5) % 10
d = (n4 + 5) % 10
print(d,c,b,a)
# 解密
n = int(input('请输入需要解密的数据:'))
# 取出每个数
n1 = n // 1000
n2 = n //100 % 10
n3 = n //10 % 10
n4 = n % 10
#解密
a = (n1 + 5) % 10
b = (n2 + 5) % 10
c = (n3 + 5) % 10
d = (n4 + 5) % 10
print(d,c,b,a)
8.获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数
n = int(input('请输入想知道丑数的位数:'))
count = 0
i =1
while True:
m = i
while m % 2 ==0:
m = m // 2
while m % 3 ==0:
m = m // 3
while m % 5 ==0:
m = m // 5
if m == 1:
count +=1
if count == n:
break
i += 1
print(i)