Bir öğrencinin sorusuydu bu. Kullanıcının girdiği sayıya kadar olan organize sayıları bulun. Peki organize sayı nedir?
Organize sayı: Basamaklarının faktöriyelleri toplamına eşit olan sayılardır.
Örnek: 145 sayısı 1! + 4! + 5! =145
Şimdi buna uygun olan sayıları bulan bir kod yazalım:
$girilen_sayi = 1;
if(isset($_GET["girilen_sayi"])){
$girilen_sayi = $_GET["girilen_sayi"];
}
// istediğimiz sayılar için değişleni tanımlıyoruz.
$sayi = "";
for($i=$girilen_sayi;$i>0;$i--){
// sayıyı rakamlara çevirip dizi yapıyoruz
$s = str_split($i);
// her sayının toplamını almak için değişleni 0 olarak alıyoruz
$sayinin_toplami = 0;
// sayının rakamları dizisini döngüye sokuyoruz.
foreach($s as $s1){
// her rakam için faktöriyeli 1 alıyoruz başlangıç için
$faktoriyel = 1;
// her rakamın faktöriyelini alıyoruz.
for($j=1;$j<$s1;$j++){
$faktoriyel += $faktoriyel * $j;
}
// sayıya ekliyoruz
$sayinin_toplami+=$faktoriyel;
}
// eğer sayı ve faktöriyelden gelen sayı eşitse aradığımız sayılara ekliyoruz
if($i==$sayinin_toplami){
$sayi .= "$i <br>";
}
}
echo $girilen_sayi." sayısına kadar olan organize sayılar:<br>". $sayi;