İki tane for ve bir tane while döngüsü ile istediğimiz sayıyı asal çarpanlarına ayıran basit bir kodlama geliştirdim. Yeni olanlar için iyi bir örnek olacağını düşünüyorum.
Kodları açıklıyorum. $sayi bizim asal çarpanlarına ayırmak istediğimiz sayı. Bildiğiniz gibi asal çarpanlara ayırmaya başlamadan önce asal sayıları elde etmemiz gerek. Bunun için üst limiti bizim $sayi mıza eşit olan bir for döngüsü başlatıyoruz. Burada $c değişkeni sırasıyla 1'den 924'e kadar olan değerleri alıyor. Bu döngünün içerinde de bir tane daha for döngüsü başlatıyoruz ve burada da $d değişkeninin $c ye eşit olana kadar artmasını istiyoruz. Bu arttırma sırasında $c/$d işlemi kalansız ise $sayac değişkeni bir artacak. Bildiğiniz gibi asal bir sayının yalnızca iki pozitif böleni vardır: Kendisi ve 1 sayısı. İşte eğer $c değişkeni kendisine kadar olan sayılardan($d değişkeni) yalnızca iki tanesine bölünebiliyorsa o zaman $c sayısı asaldır ve $sayac değişkeni de $c'nin kaç kere bölündüğünü göstermektedir. Yani if($sayac==2) deyiminden sonraki ifadelerin hepsinde $c sayısı asal bir sayıdır. Bu durumda while(1) şeklinde sonsuz bir döngü başlatıyoruz ve $sayi/$c işleminin kalansız olması durumunda $sayi yı $sayi/$c ye eşitliyoruz. Bu işlem $sayi=1 olana kadar devam edecek. Ayrıca $sayi/$c kalansız ise $c sayısı $sayi'nın asal çarpanlarından birisidir ve ekrana $c yi yazdırıyoruz. Eğer değilse de break ile sonsuz döngüyü kırıyoruz ve en tepedeki for döngüsü bir kez daha başlıyor. if($sayac!=1) kısmı kafanızı karıştırmasın onu yalnızca sayıları çarpanlarına ayırırken son sayıdan sonra "*" işaretinin çıkmaması için yaptım. Ekranın sonunda çıktı olarak "2*2*3*7*11" verilmiş olacak. Bu algoritma yalnızca PHP'de değil diğer programlama dillerinde de kullanılabilir. Aynısını javascript ile de yaptım o da burada:
yaptığım birkaç değişiklik ile birlikte sayıları 2*2*3*3*5 şeklinde yazdırmak yerine 2^2*3^2*5 şeklinde yazdıran bir sistem daha geliştirdim. Bunda bu sefer array count values fonksiyonunu kullanıyoruz.