1. 求斐波那契數(shù)列中第n個數(shù)的值:(0),1撵摆,1,2害晦,3特铝,5,8篱瞎,13,21痒芝,34, 55...
規(guī)律: 從第三個數(shù)開始俐筋,后面每個數(shù)結(jié)果都是前兩個數(shù)的和
n = 10 # 表示最終要求第幾個數(shù)的值
# n1 + n2 = current
n1 = 0
n2 = 1
current = 1
# 從第2個數(shù)開始求, x表示當前是第幾個數(shù)
for x in range(2, n+1):
# 根據(jù)前兩個數(shù)的值,計算出當前值
current = n1 + n2
# 挪一次严衬, 為了下次循環(huán)的時候求下一個值
n1 = n2
n2 = current
print(current)
2. 判斷101-200之間有多少個素數(shù)澄者,并輸出所有素數(shù)。
什么是素數(shù)(質(zhì)數(shù)): 除了1和它本身请琳,不能被其他的數(shù)整除粱挡,這種數(shù)就是素數(shù)
先將101-200之間所有的整除,一個一個的取出來
方法一:
count = 0
for num in range(101, 201):
# 判斷是否是素數(shù)
# x的范圍是2~num1
for x in range(2, num):
if num % x == 0:
# print(num, '不是素數(shù)')
# 只要在2~num-1之間找到一個能被num整除的數(shù)俄精,就說明num不是素數(shù)
break
else:
count += 1
print(num, '是素數(shù)')
print('101-200之間素數(shù)有:',count)
方法二:
for num in range(101, 201):
isprime = True # 取一個數(shù)就假設(shè)這個數(shù)是素數(shù)
for x in range(2, num):
if num % x == 0:
isprime = False # 當在2~num-1之間找到了一個能夠被num整除的數(shù)询筏,就說明假設(shè)不成立
break
# 循環(huán)結(jié)束再判斷之前的假設(shè)是否成立
if isprime == True:
print(num,'是素數(shù)')
3. 打印出所有的?水仙花數(shù),所謂?水仙花數(shù)是指一個三位數(shù),其各位數(shù)字?立?方和等于該數(shù)本身竖慧。例例如:153是
# 一個?水仙花數(shù),因為 153 = 1^3 + 5^3 + 3^3
for num in range(100, 1000):
ge_wei = num % 10
shi_wei = num // 10 % 10
bai_wei = num // 100
if ge_wei ** 3 + shi_wei ** 3 + bai_wei ** 3 == num:
print(num)
#4. 有?一分數(shù)序列列:(1/1),2/1,3/2,5/3,8/5,13/8,21/13...求出這個數(shù)列列的第20個分數(shù)
后面的分數(shù)的分母 == 前一個分數(shù)的分子 后面的分數(shù)的分子 = 前一個分數(shù)的分母 + 分子
fen_zi = 1
fen_mu = 1
for x in range(1, 10+1):
temp = fen_zi
fen_zi = fen_mu + fen_zi
fen_mu = temp
fen_zi, fen_mu = fen_mu + fen_zi, fen_zi
print(fen_zi, '/', fen_mu)
5.給?一個正整數(shù)嫌套,要求:1逆屡、求它是?幾位數(shù) 2.逆序打印出各位數(shù)字
# 234 23 2 0
# 1234 123 12 1 0
# 規(guī)律: 一個整數(shù)是幾位數(shù),就看這個數(shù)整除10踱讨,除幾次后會變成0
num = int(input('請輸入一個整數(shù):'))
num2 = num
length = 0
while True:
num //= 10
length += 1
if num == 0:
break
print(length)
# 1234 4(123) 3(12) 2(1) 1(0)
for _ in range(length):
print(num2%10,end='')
num2 //= 10
print()
方法二
num=12345
num2=num
cont=0
for _ in range(100):
num //= 10
cont+=1
if num==0:
print(cont)
break
for _ in range(cont):
print(num2%10,end='')
num2 //= 10
print()
#while 循環(huán):
while True:
print(num2%10, end='')
num2//=10
if num2<1:
break