Generowanie liczb doskonałych i złe wyniki

0

Chce wygenerowac wszystkie liczby doskonałe ale generuje mi takze 24 które nie jest dana liczba doskonała:

import numpy as np

Suma = 0
for liczba in range(1, 1000):
    Suma = 0
    for n in np.arange(1, liczba+1/2):
        if liczba % n == 0:
            Suma += n
            if Suma == liczba:
                print(liczba)
                break
0

nie wiem gdzie problem.

dla itej liczby doskonałej x

x = func(x)

func(x):
  y =0
  for i = 0; i <= x; i++
    y = y+i

return y
0
for n in range(1,1001):
    sum_divisors = 0

   for m in range(1,(n + 1)/2 + 1):
        if not n % m:
            sum_divisors += m

    if n == sum_divisors:
        print(n)
0

Sumę dzielników musisz sprawdzić po zsumowaniu ich wszystkich, a nie w trakcie obliczania sumy:

import numpy as np
 
Suma = 0
for liczba in range(1, 1000):
    Suma = 0
    for n in np.arange(1, liczba+1/2):
        if liczba % n == 0:
            Suma += n
    if Suma == liczba:
        print(liczba)
0

Poza tym, zauważ, że raczej chcesz (liczba+1)/2, nie liczba + 1/2, co w Pythonie 2 jest równoważne z liczba + 0. Inna jeszcze uwaga, tutaj NumPy nie zmieni nic w kontekście wydajności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1