PHP :: Aufgabe #287 :: Lösung #1

1 Lösung Lösung öffentlich
#287

Teilersumme natürlicher Zahlen

Anfänger - PHP von JKooP - 04.10.2020 um 11:49 Uhr
Schreibe eine Methode/Funktion, mit der es möglich ist zu prüfen, ob es sich bei einer natürlichen Zahl um eine defiziente,
vollkommende oder abundante Zahl handelt.
Betrachtet wird die Summe aller Teiler ohne die Zahl selbst.

Beispiel Zahl 80:

1 + 2 + 4 + 5 + 8 + 10 + 20 + 40 = 106 --> abundant, da

Summe kleiner als Zahl --> defizient
Summe gleich Zahl --> vollkommen
Summe größer als Zahl --> abundant

Viel Spaß
#1
vote_ok
von Exception (7090 Punkte) - 14.10.2020 um 17:20 Uhr
Quellcode ausblenden PHP-Code
<?php

check(80);
check(0);
check(1);
check(2);
check(12);
check(123);
check(1234);
check(12345);

function check(int $number) : bool
{
  if ($number < 1) {
    echo 'Ungültige Zahl.' , PHP_EOL;
    return false;
  }

  $d = [];

  for ($i = 1; $i < $number; $i++)
    if ($number % $i === 0)
      $d[] = $i;

  $sum = array_sum($d);

  if ($sum > $number)
    $result = 'abundante';
  elseif ($sum < $number)
    $result = 'defiziente';
  else
    $result = 'vollkommene';
  
  echo 'Die Zahl "' , $number , '"' , ' ist eine "' , $result , ' Zahl".' , PHP_EOL;

  return true;
}

Konsolenausgabe:

Die Zahl "80" ist eine "abundante Zahl".
Ungültige Zahl.
Die Zahl "1" ist eine "defiziente Zahl".
Die Zahl "2" ist eine "defiziente Zahl".
Die Zahl "12" ist eine "abundante Zahl".
Die Zahl "123" ist eine "defiziente Zahl".
Die Zahl "1234" ist eine "defiziente Zahl".
Die Zahl "12345" ist eine "defiziente Zahl".

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1797170

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.