資源簡介
(共22張PPT)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
少兒編程課
分解質(zhì)因數(shù)
無限語句
while True:
…
if 條件:
…
break
在不能預(yù)先明確知道循環(huán)次數(shù)的時候
只能使用while進(jìn)行循環(huán),當(dāng)條件滿足
時使用break語句退出循環(huán)
求余
n // m = 商(整數(shù))
整除
n % m = 余數(shù)
公倍數(shù)
公倍數(shù)是指在兩個或兩個以上的自然數(shù)中,如果它們有相同的倍數(shù),這些倍數(shù)就是它們的公倍數(shù)。例如:24即是6的倍數(shù)也是8的倍數(shù),則24就是6和8的公倍數(shù)。公倍數(shù)可以有多個,所有公倍數(shù)中最小的,就稱為最小公倍數(shù)。
公倍數(shù)
100以內(nèi)6和8的公倍數(shù)有哪些?最小公倍數(shù)?
遍歷100以內(nèi)的所有數(shù)字,凡是可以同時整除6和8的就是公倍數(shù)
用列表盛放所有公倍數(shù)
所有公倍數(shù)中最小的那個,就是最小公倍數(shù)
公倍數(shù)
公倍數(shù)
s=[]
for x in range(1,100):
if x % 6==0 and x % 8 ==0:
s.append(x)
print(s)
print(min(s))
兩數(shù)之積等于兩數(shù)最大公約數(shù)乘以最小公倍數(shù)。
例如:6,8的最大公約數(shù)是2,則6*8=2*最小公倍數(shù)
所以6,8的最小公倍數(shù)是24
數(shù)學(xué)特性法求最小公倍數(shù)
數(shù)學(xué)特性法求最小公倍數(shù)
m=input('數(shù)1:')
n=input('數(shù)2:')
m,n=int(m),int(n)
num1,num2=m,n
while True:
if m % n==0:
break
else:
m,n=n,m%n #利用數(shù)學(xué)特性法計(jì)算最大公約數(shù)
print(num1*num2/n) #兩數(shù)相乘除以最大公約數(shù)得到最小公倍數(shù)
窮舉法:找到數(shù)字中最小的那個數(shù),然后不斷增加1,
直到成為所有數(shù)字的倍數(shù)
窮舉法求最小公倍數(shù)
窮舉法求最小公倍數(shù)
m=input('數(shù)1:')
n=input('數(shù)2:')
m,n=int(m),int(n)
temp=m #臨時數(shù)字可以等于任意一個輸入的數(shù)字
while True:
if temp % m==0 and temp % n==0:
break
else:
temp+=1 #只要還不是公倍數(shù)就在原有數(shù)字基礎(chǔ)上加1
print(temp)
分解質(zhì)因數(shù)
每個合數(shù)都可以寫成幾個質(zhì)數(shù)相乘的形式。
把一個合數(shù)寫成幾個質(zhì)數(shù)相乘的形式表示,這也是分解質(zhì)因數(shù),如16=2×2×2×2,2就是16的質(zhì)因數(shù)。
分解質(zhì)因數(shù)
將一個正整數(shù)分解質(zhì)因數(shù),應(yīng)先找到一個最小的質(zhì)數(shù)k,然后按下述步驟完成:
1、若這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,輸出即可。
2、如果n>k,但n能被k整除,則應(yīng)輸出k的值,并用n除以k的商作為新的正整數(shù)n,重復(fù)執(zhí)行第一步。
3、如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
分解質(zhì)因數(shù)
輸入任意一個數(shù)字,分解質(zhì)因數(shù),打印分解的結(jié)果。
應(yīng)先找到一個最小的質(zhì)數(shù)2,然后按下述步驟完成:
如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印即可
如果n>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商作為新的正整數(shù)n,重復(fù)執(zhí)行第一步。
如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
分解質(zhì)因數(shù)
m=input('數(shù)1:')
m=int(m) #獲取用戶輸入的數(shù)字
k=2 #選擇最小的質(zhì)數(shù)
s=[] #存放質(zhì)因數(shù)的列表
while True:
if m==k: #如果輸入的數(shù)字等于該質(zhì)數(shù)
s.append(k) #將質(zhì)數(shù)添加到s
break #中止循環(huán)
elif m%k==0: #如果當(dāng)前m可以整除k
m=m//k #則整除
s.append(k) #并將k添加到列表
else:
k+=1 #如果m不能整除質(zhì)數(shù),則k+1
print(s)
用質(zhì)因數(shù)計(jì)算最大公約數(shù)
例如利用質(zhì)因數(shù)列表計(jì)算數(shù)字24和30的最大公約數(shù):
1、24的質(zhì)因數(shù)列表為 s1 = [ 2,2,2,3 ]
30的質(zhì)因數(shù)列表為s2 = [ 2,3,5 ]
2、新創(chuàng)建兩個列表a,b,讓a等于兩者中較長的列表,b等于兩者中較短的列表。
3、新建一個空白列表c,將a和b列表中均有的元素放入列表c。
4、最終c = [2,3],數(shù)字連乘就可以得到最大公約數(shù)2*3 = 6
所以24和30的最大公約數(shù)為6
用質(zhì)因數(shù)計(jì)算最大公約數(shù)
s1=[2,3,5] #30的質(zhì)因數(shù)列表
s2=[2,2,2,2] #24的質(zhì)因數(shù)列表
a,b=s1,s2 #a,b分別為列表s1,s2
c=[] #新建一個空列表
for x in a:
if x in b:
c.append(x) #將a列表和b列表中均有的值放入空列表中
print(c)
in:如果在指定的序列中找到值返回True,否則返回False
用質(zhì)因數(shù)計(jì)算最小公倍數(shù)
1、輸入兩個數(shù)字m,n。
2、分別得到兩個數(shù)字的質(zhì)因數(shù)列表。
3、提取兩個列表中的質(zhì)因數(shù)組成一個新的列表。
4、將新列表中所有數(shù)字連乘,得到的積就是m和n的最小公倍數(shù)。
用質(zhì)因數(shù)計(jì)算最小公倍數(shù)
如果兩個數(shù)字的質(zhì)因數(shù)列表長度不一致,例如
24的質(zhì)因數(shù)列表為s1 = [ 2,2,2,3 ]
30的質(zhì)因數(shù)列表為s2 = [ 2,3,5 ]
則新創(chuàng)建兩個列表a,b,讓a等于兩者中較長的列表,b等于兩者中較短的列表。
從b中依次取數(shù)字,一旦該數(shù)字在a中已經(jīng)存在,則跳過該數(shù)字;否則將該數(shù)字添加到a中。
例如: b中的2,3在a中已經(jīng)存在,跳過;而b中的數(shù)字5在a中不存在,將數(shù)字5添加到a中。
最終a = [2,2,2,3,5],數(shù)字連乘為2*2*2*3*5 = 120
所以24和30的最小公倍數(shù)為120
用質(zhì)因數(shù)計(jì)算最小公倍數(shù)
如果兩個數(shù)字的質(zhì)因數(shù)列表長度一致,例如:
12的質(zhì)因數(shù)列表為s1 = [ 2,2,3 ]
8的質(zhì)因數(shù)列表為s2 = [ 2,2,2 ]
則新創(chuàng)建兩個列表a,b,其中a等于s1,b等于s2。
從b中依次取值與a中對應(yīng)位數(shù)的值進(jìn)行比較。若數(shù)字一致跳過該數(shù)字;否則,則將該數(shù)字添加到a中。
b中前兩個值與a中對應(yīng)位數(shù)的值一致,跳過;b中第三個值與a中對應(yīng)位數(shù)的值不一致,將數(shù)字2添加到a中。
最終a = [2,2,3,2],數(shù)字連乘為2*2*3*2 = 24
所以12和8的最小公倍數(shù)為24
代碼實(shí)現(xiàn)
s1=[2,2,3]
s2=[2,3,5]
a,b=s1,s2
if len(a)==len(b): #如果a,b長度一致
for x in range(len(b)):
if b[x]!=a[x]: #b和a中的值進(jìn)行對應(yīng)位比較
a.append(b[x]) #如果對應(yīng)位置上的值不等,則添加到a中
else:
if len(b)>len(a): #如果b的長度大于a,則交換
a,b=b,a #交換a,b的值
for x in b: #從b列表中取值
if x not in a: #若這個值不在a列表中
a.append(x) #則將這個值放到a列表中
print(a)
result=1
for x in a:
result*=x #連續(xù)乘積
print(result) #打印最小公倍數(shù)
not in:在指定序列中
沒有找到值返回True,
否則返回False
展開更多......
收起↑
資源預(yù)覽