Mükemmel Sayıları PHP ile bulma

Bu yazımızda matematikte mükemmerl sayılar olarak geçen sayıları PHP ile kod yazarak bulacağız. Sayı aralığını da kullanıcıdan isteyeceğiz. Aşağıdaki gibi bir form tasarlayarak sayı aralığını kullanıcıdan isteyelim.



Peki mükemmel sayı nedir?

1'den kendisine kadar olan tam bölenleri toplamı kendisine eşit olan sayılara mükemmel sayılar denir. Örneğin 6 sayısının bölenleri toplamı aşağıda görüldüğü gibi kendisine eşittir.

1
2
3

Toplam=6

Yine 28 sayısının bölenleri olan 1,2,4,7 ve 14 sayılarının toplamı 28 olup, sayının kendisine eşittir. Aşağıda mükemmel sayılar listesi verilmiştir.

6
28
496
8128



Sözü fazla uzatmadan kodlamaya geçelim. Aslında yapacağımız işlem oldukça basit iki döngü açacağız. İlk döngü 1.sayıdan başlayıp, 2. sayıya kadar gidecek.  İçteki döngü ise 1'den sayının 1 eksiğine kadar olan sayılara bakacak, tam bölen varsa toplayacak. İçeteki döngü bitince if şart yapısı ile bir kontrol yapıp bölenleri toplamının sayıya eşit olup olmadığına bakacağız.

Örneğin 1 ile 100 arasındaki sayıları bulmak için aşağıdaki  kodu yazabiliriz.

for($i=1; $i<=100;$i++)
   $toplam=0;
   for($j=1; $j<$i-1; $j++)
  {
         if($i%$j==0)
        {
             $toplam+=$j;
        }
   }
   if($toplam==$i)
   echo $i."<br>";
 
 }

Burada toplam içinde bölen sayıları sürekli biriktiriliyor. PHP ve HTML kayna kodunun tamamı aşağıda verilmiştir. Bu işlemi bir fonksiyon şeklinde de yazabilirsiniz.
 

<?php
error_reporting(0);
 
if(isset($_POST)) 
$num1 = $_POST['sayi1'];
$num2 = $_POST['sayi2'];
 
 
for($i=$num1; $i<=$num2;$i++)
   $toplam=0;
   for($j=1; $j<$i-1; $j++)
  {
         if($i%$j==0)
        {
             $toplam+=$j;
        }
   }
   if($toplam==$i)
   echo $i."<br>";
 
 }
 
} //isset
 
 
if(!($_POST)) 
 
?>
 
 
<!DOCTYPE html>
<html>
<head>
<title>Mükemmel Sayılar</title>
</head>
<body>
 
<form method="POST" action="<?= $_SERVER['PHP_SELF']?>" >
<table align="center" border="0">
<tr>
<td colspan="2" align="center">
<h3>Mükemmel Sayıları Bul</h3>
</td>
</tr>
<tr>
<td>Sayı 1:</td>
<td><input type="number" name="sayi1"></td>
</tr>
<tr>
<td>Sayı 2:</td>
<td><input type="number" name="sayi2"></td>
</tr>
<tr>
 
<td colspan="2" align="center">
<input type="submit" name="Sihirli Sayıları Bul">
</td>
</tr>
</table>
</form>
</body>
</html>
 
<?php
}
 
?>

Sonuç aşağıdaki gibi çıkacaktır.


KAYNAK
Perfect Numbers
https://en.wikipedia.org/wiki/List_of_perfect_numbers

Mutlu kodlamalar,
Oğuzhan TAŞ
Ocak 2021

Bookmark and Share