def?hcf(u,?v):

目前成都創(chuàng)新互聯已為成百上千的企業(yè)提供了網站建設、域名、虛擬主機、綿陽服務器托管、企業(yè)網站設計、肇州網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發(fā)展。
global?a
if?u?%?v?==?0:
a?=?v
else:
m?=?u?%?v
n?=?v
hcf(n,?m)
return?a
def?lcd(u,?v,?h):
return?u?*?v?/?h
def?main():
print("?【請連續(xù)三次求得輸入的兩個整數最大公約數和最小公倍數:】")
for?n?in?range(3):
print("?【第%d?次:】"?%?(n?+?1))
u?=?int(input("?【請輸入第一個整數:】"))
v?=?int(input("?【請輸入第二個整數:】"))
h?=?hcf(u,?v)
print("?【%d?和%d?的最大公約數為:】%d"?%?(u,?v,?h))
l?=?lcd(u,?v,?h)
print("?【%d?和%d?的最小公倍數為:】%d"?%?(u,?v,?l))
if?__name__?==?'__main__':
main()
基本是按照模板案例寫的了
提到最大公約數,那么就不得不說什么是公約數,它是一個能被若干個整數同時均整除的整數。如果一個整數同時是幾個整數的約數,稱這個整數為它們的“公約數”;公約數中最大的稱為最大公約數。對任意的若干個正整數,1總是它們的公因數。
舉個例子:30和40的公約數有:1,2,5,10,那么10是這幾個里面最大的,就是30和40的最大公約數。
python求最大公約數
1.python求最大公約數設計思路
給定兩個數,從1開始嘗試,步長為1逐漸遞增,為了優(yōu)化算法,只需要循環(huán)到兩個數中最小的那個數就可以。所以,第一步就是計算出兩個數中最小的數,然后利用for循環(huán)從1到最小的那個數進行枚舉,如果該數能夠同時被兩個數整除,則記錄下來,直到循環(huán)結束,最后,最大的這個就是最大公約數。
特別注意:這里會用到range函數,range(0,5)的結果為0,1,2,3,4注意是沒有5的,因此在本例中循環(huán)時應該是從1到最小的那個數+1才對。
2.最大公約數的python實現
打開百度APP,查看更多高清圖片
說明:在上面的代碼中,我們會用到自定義函數的定義方法:def ,兩個數的最小數的判斷方法,for循環(huán)和枚舉取值,整除取余,輸入輸出等內置函數。
函數定義:
Common_multiple(number1, number2):? # 求兩個數的最小公倍數
Maximum_common_divisor(*number):? # 求任意多個數的最小公倍數
Minimum_common_multiple(*number):? # 求任意多個數的最大公因數
程序縮進如下:
程序縮進
運行結果展示:
運行結果
函數具體代碼:縮進版本點擊自取
def Common_multiple(number1, number2):? # 求兩個數的最小公倍數
while number1 % number2 != 0:
number1, number2 = number2, (number1 % number2)
return number2
def Maximum_common_divisor(*number):? # 求任意多個數的最小公倍數
while len(number) 1:
number = [Common_multiple(number[i], number[i+1]) for i in range(0, len(number)-1)]
return number[0]
def Minimum_common_multiple(*number):? # 求任意多個數的最大公因數
while len(number) 1:
number = [number[i]*number[i+1]/Common_multiple(number[i], number[i+1]) for i in range(0, len(number)-1)]
return number[0]
# 定義一個函數
def gcd(x, y):
"""該函數返回兩個數的最大公約數"""
# 獲取最小值
if x y:
smaller = y
else:
smaller = x
for i in range(1,smaller + 1):
if((x % i == 0) and (y % i == 0)):
hcf = i
return gcd
# 用戶輸入兩個數字
num1 = int(input("輸入第一個數字: "))
num2 = int(input("輸入第二個數字: "))
print( num1,"和", num2,"的最大公約數為", gcd(num1, num2))
def showMaxFactor(num):
----count = num//2
----while count 1:
--------if num % count ==0:
------------print('%d最大的約數是%d'%(num,count))
------------break
--------else:
------------count -=1
----else:
------------print('%d是素數'%num)
num= int(input('請輸入一個數:'))
showMaxFactor(num)
算法應該是上面這個,你的漏掉一個else
count = num//2 這個是整除,得到的是num除以2的整數部分,和count = num/2不同(25//2=12,25/2=12.5)
這個算法屬于暴力求解,先找到一個‘假設的最大公約數’count(整數),然后嘗試num能不能整除count,如果能整除,那就是最大約數,如果不能count-1,繼續(xù)嘗試直到得到最大約數。因為2是除了1之外的最小素數,所以任何一個num的最大約數都不可能超過num/2,所以起始的count假設為num//2。當然你也可以假設為比num//2大的整數,只是會浪費計算而已。
本文標題:python中約數的函數,python中的數學函數
網頁路徑:http://chinadenli.net/article25/dsicdci.html
成都網站建設公司_創(chuàng)新互聯,為您提供全網營銷推廣、定制網站、服務器托管、網站改版、做網站、網站維護
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯