Wątek przeniesiony 2017-10-12 14:44 z Edukacja przez Patryk27. Powód: Wątek dotyczący podstaw

Generowanie liczb doskonałych i złe wyniki

Odpowiedz Nowy wątek
2017-10-12 14:36
Złoty Terrorysta
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
edytowany 2x, ostatnio: furious programming, 2017-10-12 18:10
2017-10-12 14:41
Czarny Kura
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
edytowany 4x, ostatnio: furious programming, 2017-10-12 18:10

Pozostało 580 znaków

2017-10-12 14:53
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)
edytowany 2x, ostatnio: Pyxis, 2017-10-12 21:30

Pozostało 580 znaków

2017-10-12 16:51
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)
edytowany 1x, ostatnio: Szewy, 2017-10-12 16:52

Pozostało 580 znaków

2017-10-12 18:26
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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