Ruby :: Aufgabe #226

1 Lösung Lösung öffentlich

Summe alle Teiler einer positven Ganzzahl

Anfänger - Ruby von hollst - 18.06.2019 um 20:49 Uhr
Man schreibe eine Funktion SIGMA(n) mit n > 0 und ganzzahlig, wobei der Funktionswert sich
aus der Summe aller ganzzahligen, positven Teiler von n ergibt.

Beispiele (Zahl; Teiler; Funktionswert);
1; 1; 1
2; 1, 2; 3
4; 1, 2, 4; 7
5; 1, 5; 6
...
12; 1, 2, 3, 4, 6, 12; 28
...
100; 1, 2, 4, 5, 10, 20, 25, 50, 100; 217

Für 0 < n <= 200 sollte sich der beigefügte Pinplot ergeben.

Viel Spaß!

Lösungen:

vote_ok
von nlo22 (120 Punkte) - 31.07.2019 um 16:08 Uhr
Quellcode ausblenden Ruby-Code
def sigma(n)
  if not n.integer? or not n > 0
    raise ArgumentError, "#{n} ist keine positive ganze Zahl"
  end

  result = "#{n}"
  summe_teiler = 0
  for i in 1..n
    if n%i == 0 then
      summe_teiler += i
      result << (i == 1 ? ";" : ",")
      result << "#{i}"
    end
  end

  result << ";#{summe_teiler}"

  return result
end