1. python編寫函數,實現判斷正整數n是否是完數。若是,函數返回True,否則返回Flase
在Python中,編寫函數來判斷一個正整數n是否為完數是一個有趣的練習。完全數是一種特殊的自然數,它等於其所有真因子(除了自身)之和。例如,6是一個完全數,因為它的因子有1、2和3,而1+2+3=6。下面的代碼展示了如何編寫這樣一個函數。
首先,我們需要定義一個函數,該函數接受一個正整數n作為參數。函數的主要任務是找到n的所有真因子,並檢查這些因子的和是否等於n。
下面是一個Python代碼示例:
python
def is_perfect_number(n):
if n <= 1:
return False
sum = 0
for i in range(1, n):
if n % i == 0:
sum += i
return sum == n
在這個函數中,我們首先檢查n是否小於或等於1,因為1不是完全數。然後,我們初始化一個變數sum來存儲n的所有真因子之和。接下來,我們使用一個for循環來遍歷從1到n-1的所有數,檢查它們是否是n的因子。如果是,則將它們累加到sum中。最後,我們檢查sum是否等於n,如果是,則返回True,表示n是完全數;否則返回False。
為了確保這個函數的正確性,可以編寫一些測試用例來驗證它的功能。例如:
python
print(is_perfect_number(6)) # 應該輸出True
print(is_perfect_number(28)) # 應該輸出True
print(is_perfect_number(12)) # 應該輸出False
通過這種方式,我們可以輕松地判斷一個正整數是否為完全數。
2. python1000以內3和7的倍數只和
在編寫程序時,計算1000以內3和7的倍數之和是一種常見的練習,有助於理解循環和條件語句的基本應用。一個簡單的實現方法是使用循環遍歷從3到1000的整數,並檢查每個整數是否能被3或7整除。如果滿足條件,則將其累加到總和中。
具體來說,可以這樣編寫代碼:
python
sum = 0
for i in range(3, 1000+1):
if (i % 3 == 0) or (i % 7 == 0):
sum += i
print(sum)
這段代碼首先初始化一個變數`sum`為0,然後使用`for`循環遍歷從3到1000的所有整數。對於每個整數`i`,代碼檢查它是否能被3或7整除,即`i % 3 == 0`或`i % 7 == 0`。如果條件滿足,則將`i`的值累加到`sum`中。最後,程序輸出累加的結果。
值得注意的是,這種方法雖然簡單直接,但效率較低,特別是在處理較大范圍的數字時。更高效的演算法可以通過數學方法減少循環次數。例如,可以先計算3和7的最小公倍數21,然後利用數學公式來計算特定范圍內的倍數之和。
使用這種方法,可以簡化計算過程,提高程序效率。具體實現可以參考以下代碼:
python
def sum_of_multiples(n, a, b):
lcm = (a * b) // gcd(a, b)
limit = n // lcm
return lcm * (limit * (limit + 1) // 2 - (limit // 3) * ((limit // 3) + 1) // 2 - (limit // 7) * ((limit // 7) + 1) // 2 + (limit // 21) * ((limit // 21) + 1) // 2)
print(sum_of_multiples(1000, 3, 7))
上述代碼中,`sum_of_multiples`函數利用數學公式來計算給定范圍內3和7的倍數之和,其中`lcm`為最小公倍數,`gcd`為最大公約數。這種方法不僅提高了效率,還使代碼更加簡潔。