我需要在python中編寫一個函數,告訴我兩個數字(m,n)是否友好。 我知道友好的數字是兩個不同的數字,因此相關的每個正確的除數的總和等於另一個數字。python:友好的數字檢查
我不能從這裏
def ami_check(m,n):
通過我將不勝感激幫助。
我需要在python中編寫一個函數,告訴我兩個數字(m,n)是否友好。 我知道友好的數字是兩個不同的數字,因此相關的每個正確的除數的總和等於另一個數字。python:友好的數字檢查
我不能從這裏
def ami_check(m,n):
通過我將不勝感激幫助。
可使用此代碼:: 用於檢查親情號碼
def sumPropDiv(n):
"""returns sum of proper divisors of n"""
dSum = 0
for x in range(1, n/2 + 1):
if n % x == 0:
dSum += x
return dSum
def amicSum(number):
"""finds the sum of all amicable numbers less than number, with number greater than 4."""
answer = 0
for x in range(4, number):
if sumPropDiv(x) > 4:
if sumPropDiv(sumPropDiv(x)) == x and sumPropDiv(x) != x:
answer += x
print x, "and", sumPropDiv(x), "are an amicable pair."
return answer
print amicSum(10000)
定義,Amicable Numbers
從Wikipedia:
親情號碼是兩個不同的號碼如此相關,使得的 的總和每個適當的因數等於另一個數字。 (A正確 除數一些比 數字本身其他的是一些積極因素
打破下來:
two different numbers
OKthe sum of the proper divisors of each
OKis equal to the other number
OKThen:
def ami_check(x,y):
if x==y: return False # 1
sum_x=sum(e for e in range(1, x//2+1) if x%e==0) # 2
sum_y=sum(e for e in range(1, y//2+1) if y%e==0) # 2
return sum_x==y and sum_y==x # 3
這是一種嘗試,
def factors(n):
return sorted(reduce(list.__add__,
([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))[:-1]
def ami_check(m,n):
return sum(factors(m)) == n and n != m
結果
In [1]: ami_check(220,284)
Out[1]: True
In [2]: ami_check(5545,21654)
Out[2]: False
In [3]: ami_check(2620,2924)
Out[3]: True
爲了解決這個問題,定義,計算一個數字的約數的總和(因爲你需要做一個函數那兩次)。提示:如果該函數是給定數字的除數,該函數將循環檢查適當範圍的每個整數。 – Inspired