1一张纸的厚度大约是0.08mm,对折多少次后能到达珠穆朗玛峰的高度(8838.13m)
high = 8838.13*1000
n = 0
num = 0.08
while num < high:
n +=1
num *=2
print(num,n)
2.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到
第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
当月兔子数 = 上一个月的兔子数(已有兔子对数)+ 两个月前的兔子数(能生的兔子对数):斐波那契数列
n=int(input('请输入n的值:'))
sum2=1
sum3=1
for x in range(n-2):
sum1 = sum2
sum2 = sum3
sum3 = sum2 + sum1
print(sum3)
3.将一个正整数分解质因数。例如:输入90,打印出90=233*5
n=int(input('请输入正整数:'))
print(n,'=',end='\000')
for x in range(2,n):
for x in range(2,n):
if n % x==0:
num1 = x
n = n // x
print(num1,'*',end='\000')
break
print(n)
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m=int(input('请输入正整数m:'))
n=int(input('请输入正整数n:'))
for x in range(1,n+1):
if n % x==0:
if m % x == 0:
num1 = x
print(m,'和',n,'的最大公约数为:',num1)
num2 = m*n/num1
num2=int(num2)
print(m,'和',n,'的最小公倍数为:',num2)
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for x in range(2,1000):
num = 0
for y in range(1,x):
if x % y == 0:
num +=y
if num == x:
print(num)
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
year=int(input('请输入年:'))
month=int(input('请输入月:'))
day=int(input('请输入日:'))
if ((not year % 4) and (year % 100)) or (year % 400) == 0:
if 2 < month < 8:
days = (month-1)*30 + int(month/2)-1 +day
elif month <= 2:
days = (month-1)*30 + int(month/2)+day
else:
days = (month-1)*30 + int((month+1)/2)-1 +day
print('闰年')
else:
if 2 < month < 8:
days = (month-1)*30 + int(month/2)-2 +day
elif month <= 2:
days = (month-1)*30 + int(month/2)+day
else:
days = (month-1)*30 + int((month+1)/2)-2 +day
print('不是闰年')
print(days)
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
num = int(input('请输入四位正整数:'))
n = [0,0,0,0]
for x in range(4):
n[x] = num % 10
num = num // 10
m = 0
num1 = 0
for x in n:
x = (x+5) % 10
num1 += x*10**(3-m)
n[m] = x
m +=1
print(num1)