【问题标题】:Perfect number generator from a given min and max value给定最小值和最大值的完美数字生成器
【发布时间】:2021-04-18 11:47:34
【问题描述】:

我想制作一个完美的数字生成器,它需要一个最小值和最大值,然后打印出最小值和最大值之间的所有完美数字。 请帮我 我的代码:

  min_value=int(input("Enter a min value: "))
max_value=int(input("Enter a max value: "))
factors=[] # factors list
for x in range(min_value,max_value): # initiliazing the numbers
    for i in range(min_value,max_value): # adding all the factors to the factor list
        if x%i==0: # checking if its a factor or not
            factors.append(i) #appending the factor
    sum=0 # initilazing the sum
    for num in range(len(factors)): # creating an indice to initialize sum of factors
        sum=sum+factors[num] # adding the value of sum
    if sum==x: # checking if the sum value is equal to a number
        print(x) # printing the number

我已经添加了 cmets。 提前致谢! 编辑:完美数字是那些因子相加的数字。例如。 6. 6个因素是:1,2,3。 1+2+3=6

【问题讨论】:

  • 完美数是那些因数相加的数。例如。 6. 6个因素是:1,2,3。 1+2+3=6。将此添加到帖子中

标签: python python-3.x list input numbers


【解决方案1】:

只要先找到因子然后做他们的summation如果这满足完美数字definition然后append然后在新列表中ls

min_value=int(input("Enter a min value: "))
max_value=int(input("Enter a max value: "))

def factor_sum(x):
    factors = []
    for i in range(1, x + 1):
        if x % i == 0:
            if x != i:
                factors.append(i)
    return factors

ls = []
for x in range(min_value,max_value):
    sum_ = sum(factor_sum(x))
    if x == sum_:
        ls.append(x)
    
print(ls)

【讨论】:

    【解决方案2】:

    这是另一种方法:

    min_value = int(input('Min value: '))
    max_value = int(input('Max value: '))
    
    result = []
    for number in range(min_value, max_value + 1):
        temp_list = []
        for num in range(1, number // 2 + 1):
            if number % num == 0:
                temp_list.append(num)
        if sum(temp_list) == number:
            result.append(number)
    
    print(result)
    

    这再次要求用户输入最小值和最大值,然后在该范围内循环

    对于范围内的每个数字,它遍历它的所有因子并将它们附加到列表中,然后使用 sum 计算列表中所有项目的总和并检查它们是否等于数字,如果它们确实附加要列出的号码

    【讨论】:

      【解决方案3】:

      我想我会在 [1, x-1] 但不是 [min_value, max_value]。例如, 如果max_value = 100 and min_value = 1.我知道28是一个完美的数字。我们可以使x = 28.所以很明显i的范围应该是[1, 27]

      # for i in range(min_value,max_value): 
      for i in range(0, x)
      

      【讨论】:

        猜你喜欢
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 2021-02-19
        • 1970-01-01
        • 2023-04-10
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        相关资源
        最近更新 更多