Python 如何删除不需要的号码?

Python 如何删除不需要的号码?,python,math,sum,numbers,remove,Python,Math,Sum,Numbers,Remove,我在python上编写了这段代码。这是关于计算友好的数字。但是当我运行代码0时,答案中会包含6,28。之所以包括这些数字,是因为除6之外的6的除数是1,2,3,这些数字的总和是6。我不知道如何删除这些数字。SOS按照您定义的方式,它不仅会捕获友好数字,还会捕获类似于6的数字,这些数字本身就有点像友好数字 如果你不想捕捉完美数字,只要将i==suming(s)更改为If i==suming(s)而不是i==s,让我们从什么是友好数字开始,友好数字是一对数字a和B s.t。a==B的适当除数之和和和

我在python上编写了这段代码。这是关于计算友好的数字。但是当我运行代码
0时,答案中会包含6,28
。之所以包括这些数字,是因为除
6
之外的
6
的除数是
1,2,3
,这些数字的总和是
6
。我不知道如何删除这些数字。SOS

按照您定义的方式,它不仅会捕获友好数字,还会捕获类似于6的数字,这些数字本身就有点像友好数字


如果你不想捕捉完美数字,只要将i==suming(s)更改为
If i==suming(s)而不是i==s
,让我们从什么是友好数字开始,友好数字是一对数字a和B s.t。a==B的适当除数之和和和B==a的适当除数之和

友好数字的一个例子是220和284。为了找到这样的数字,我们需要一个计算适当除数之和的函数。如果您有,为了清楚起见,我将其重命名:

def suming(n):
    s = 0
    for i in range(1, n):
        if n%i == 0:
            s += i
    return s

def Amicable_number(N):
    Amicable = []
    for i in range(N+1):
        s = suming(i)
        if i == suming(s):
            Amicable.append((i, s))
    for a_element_list in Amicable:
        line=""
        for a_element in a_element_list:
            line=line+str(a_element)+'s amicable number is'
        line=line[:-5]
        print(line)
现在我们需要搜索一个数字a s.t.
sum\u of_property\u除数(n)==B
a==sum\u of_property\u除数(B)

您将看到还添加了0,6,28,这是因为该对是
0,0
6,6
28,28
。所以这不是一对真正友好的组合,所以我们需要添加一个条件,a!=B

for A in range(300):
    B = sum_proper_divisors(A)
    if sum_proper_divisors(B) == A:
        print("pair", A,B)
这会找到该对,但它会找到它两次,因此我们还可以添加一个条件
a
(这个条件比
a!=B
强,因此我们替换该条件)

适用于范围内的(300):
B=和(A)的适当除数
如果和本除数(B)=A和A
您可能不应该定义名为
sum
的函数,因为这是a的名称。您可以忽略我在原始代码上使用了不同的名称。不清楚实际问题是什么?你能公布预期的结果吗?最初的问题是计算友好的数字。例如,如果我键入了友好号码(300),它必须给我一个220s的答案友好号码是284 284s友好号码是220只要将if条件更改为:
if s!=i和i==suming:
(因为友好数字是两个不同的数字)。然后,友好的_编号(300)产生您想要的结果。
i!=s
的工作原理与
类似,而不是i==s
。你不必改变:)哈哈,我试着避免使用!运算符在回答问题时使用,只是因为有时我在谈论没有运算符的语言时不小心使用了它
for A in range(300):
    B = sum_proper_divisors(A)
    if sum_proper_divisors(B) == A:
        print("pair", A,B)
for A in range(300):
    B = sum_proper_divisors(A)
    if sum_proper_divisors(B) == A and A != B:
        print("pair", A,B)
for A in range(300):
    B = sum_proper_divisors(A)
    if sum_proper_divisors(B) == A and A < B:
        print("pair", A,B)