Faktöriyel Asal

faktoriyel-asal (büyük resim için tıklayın)

Faktöriyel konusuna şu gönderide giriş yapılmıştı. Bu gönderide ise faktöriyel asal tanımlamasını yapıp, PHP ile kod bloklarına dökmeye çalışacağım. Faktöriyel asal; faktöriyelden 1 eksik ya da 1 fazla olan asal sayıdır. Kaynak için tıklayın. Asal olup olmadığının kontrolü için kullanılan fonksiyon şu gönderide mevcut. Bu gönderide tanımlanacak faktoriyelAsalMi fonksiyonunun içeriği aşağıdaki gibidir.

  • function faktoriyelAsalMi($param){
  • if (!asalMi($param) or $param<2)
  • return 0; 
  • $faktoriyel=1;
  • $sayac = 1;
  • while ($faktoriyel <= $param + 1)
  • {
  • $faktoriyel=faktoriyelAl($sayac);
  • if ($param + 1 == $faktoriyel or $param - 1 == $faktoriyel)
  • return 1;
  • $sayac++;
  • }
  • return 0; 
  • }

Yukarıdaki fonksiyon ile asal olmayan ya da 2'den küçük değerler için geriye sıfır return edilir. Aksi durumda parametre olarak verilen değere kadar while döngüsü ile sayaç değerinin faktoriyeli alınır ve bu değer parametre değerinin 1 fazlası ya da 1 eksiğine eşit mi diye bakılır, eğer eşitse 1 return edilir. Ne zamana kadar bu işlem yapılır, yani döngü şartı nedir ? Faktoriyel sonucu, parametre değerinin 1 fazlasına küçük ya da eşit oluncaya kadar bu işlem gerçekleştirilir. Çözümün esas kaynağı şu linkte. Kaynak öncesinde doğru komutlar arasında parçaları birleştirip bütüne gidememekten iyice saçmalamaya başlamıştımki örnek arama gereği sonucunda yardımıma yetişti. Örnek kullanım için, sorgulayacağım sayıları diziye aktarıp döngü ile her birini oluşturulan fonksiyon ile sorguladım ve ekrana yazdırdım. Kod blokları aşağıdadır.

  • $sayilar=array(3,25,7,5,61,86,1,719,1319,2,1967,5039,-5);
  • for($i=0;$i
  • echo faktoriyelAsalMi($sayilar[$i])==1 ? $sayilar[$i]." faktöriyel asal
    ":$sayilar[$i]." faktöriyel asal değil
    ";
  • }

Şimdi gelelim belirli değerler arasındaki faktöriyel asal sayıları ekrana yazdırmaya. Bunun için faktoriyelAsalSayilariAl isminde, aşağıdaki gibi ilkel bir fonksiyon oluşturdum.

  • function faktoriyelAsalSayilariAl($baslangic,$bitis){
  • for($i=$baslangic;$i<=$bitis;$i++){
  • if(faktoriyelAsalMi($i)){
  • echo $i." sayısı faktoriyel asal 
    ";
  • }
  • }
  • }

Fonksiyonun kullanımı için sadece parametreleri verip çağırmak yeterli. faktoriyelAsalSayilariAl(2,12345) gibi. Faktöriyel asal sayıları hakkında daha fazla bilgi almak isteyenler için link => https://oeis.org/A088054

iam

Ömürcan Serdar, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Etiketler

Beğeni


Yıllara Göre Gönderiler








genel Kategori

Ubuntu Klavye Kısayolları

Windows Klavye Kısayolları

IntelliJ IDEA Klavye Kısayolları & PhpStorm Klavye Kısayolları