Fermat Sayıları ve Fermat Asal Kontrolü

fermat-sayilari-ve-fermat-asal-kontrolu (büyük resim için tıklayın)

Fermat sayıları; n sıfırdan küçük olmayan bir tam sayı olmak üzere, (2^(2^n)+1) şeklinde yazılabilen sayılardır. İsimlerini, bu sayıları ilk kez incelemiş olan 17. yüzyıl matematikçisi Pierre de Fermat'dan alırlar. Bu sayılardan ilk beşi asal sayıdır ve bu sayılara fermat asalı denir. Fermat ,1650'de tüm Fermat sayılarının asal olduğunu ileri sürmüş, fakat Leonhard Euler 1732'de 5. sayıyı (4294967297) iki çarpana ayırarak bu iddiayı çürütmüştür (641*6700417=4294967297). Kaynak için tıklayın

PHP ile değerin Fermat sayısı olup olmadığına bakalım.

  • function fermatMi($param){
  • $sayac=0;
  • while($sayac<10){
  • $islem=pow(2,pow(2,$sayac))+(1);
  • if($islem==$param)
  • return 1;
  • $sayac++;
  • }
  • return 0;
  • }

Yukarıdaki fonksiyonda while döngüsüne 10 değerini verdim çünkü üs alındığında (2^(2^10)+1) sonucu sonsuz, INF döndürüyor). Eğer işlem sonucu verilen parametreye eşit ise 1 return ediyor. Örnek kullanımı aşağıda verilmiştir.

  • $sayilar=array(3,61,5,1461,65537,4294967297);
  • for($i=0;$i
  • echo fermatMi($sayilar[$i])==1 ? $sayilar[$i]." fermat
    ":$sayilar[$i]." fermat değil
    ";
  • }

Devamında ise fermat asal kontrolünü gerçekleştiren fonksiyonu kodlamayalım. 

  • function fermatAsaliMi($param){
       if(asalMi($param))
           if(fermatMi($param))
               return 1;
               
       return 0;        
    }

Örnek kullanımı için yine sayılar dizisinden gidelim.

  • for($i=0;$i<count($sayilar);$i++){
       echo fermatAsaliMi($sayilar[$i])==1 ? $sayilar[$i]." fermat asalı<br>":$sayilar[$i]." fermat asalı değil<br>";
    }

omurserdarr

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

Beğeni