• 04-11-2010, 17:53:15
    #1
    merhaba arkadaşlar, php çok yüksek rakamlarda matematik işlemlerinde işlemi durduruyor,

    kendi yazdıgım çarpma fonksiyonunu paylaşayım dedim.
    Fonksiyonum sayesinde 1 milyon basamaklı sayıyı da, 10 milyon basamaklı sayıyı da, 100 milyon basamaklı sayıyı da istediğiniz sayı ile çarptırabilirsiniz.

    <?
    
    function carpfatal($contents,$carpilacak)
    {
      $zimbirti2="";
      $zimbirti="";
      $kalan="0";
      
      $strlen=strlen($contents);
    
      for($i=1;$i<=$strlen;$i++)
      { 
        $carp=gmp_strval(gmp_mul("$carpilacak", "".$contents[$strlen-$i].""));
        $topla=gmp_strval(gmp_add($carp,$kalan));
        
        $zimbirti.=substr($topla,-1);
        $kalan=substr($topla,0,-1);
      }
    
      $strlen=strlen($zimbirti);
    
      for($i=1;$i<=$strlen;$i++)
      { 
        $zimbirti2.=$zimbirti[$strlen-$i];
      }
    
      $zimbirti2="$kalan$zimbirti2";
      return $zimbirti2;
    }
    
    
    
    
    $filename = "b.txt"; //1 milyon basamaklı sayımın olduğu txt.
    $handle = fopen($filename, "r");
    $contents = fread($handle, filesize($filename));
    fclose($handle);
    
    
    $filename2 = "carpacagim.txt"; //carpmak istediğim sayının olduğu txt
    $handle2 = fopen($filename2, "r");
    $contents2 = fread($handle2, filesize($filename2));
    fclose($handle2);
    
    
    $carptim=carpfatal($contents,$contents2);
    
    $fg = fopen("c.txt","a"); //c.txt ye kaydediyorum sonucu
    fwrite($fg,$carptim);
    fclose($fg);
    
    ?>
    az önce 8 milyon basamaklı bir sayı ile 1000 haneli bir sayıyı çarptırdım.
    Sorunsuz çalışmaktadır fonksiyonum.
    Kolay gelsin
  • 04-11-2010, 18:22:17
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    hiçbir zaman işime yaramayacak olsa da ilginç ve akademik olmuş
  • 04-11-2010, 18:29:04
    #3
    Üyeliği durduruldu
    onbin'inci fibonacci sayısını hesaplayanını da yapar mısınız
  • 04-11-2010, 18:45:55
    #4
    CakirTurk adlı üyeden alıntı: mesajı görüntüle
    onbin'inci fibonacci sayısını hesaplayanını da yapar mısınız
    fibonacci serisinde toplama işlemi var, yukardaki fonksiyonumu editleyerek bunu yapabilirsiniz.

    çarpma işlemini mersenne asallarında kullanabilirsiniz.
  • 04-11-2010, 19:02:16
    #5
    Üyeliği durduruldu
    İsa abi seni gerek burdan gerek facebook dan takip ediyorum da hep en uçuk şeylerle uğraşıyosun, amacın nedir ?
  • 04-11-2010, 19:07:32
    #6
    Üyeliği durduruldu
    hayatım boyunca nefret ettim matematikten
    elinize sağlık
  • 04-11-2010, 19:13:19
    #7
    CakirTurk adlı üyeden alıntı: mesajı görüntüle
    onbin'inci fibonacci sayısını hesaplayanını da yapar mısınız
    ayrıyeten matematiksel döngülere merakın varsa, php biliyorsan, ve bu işlerle vakit harcamak istiyorsan şu konuma da bakabilirsin:

    https://www.r10.net/php/492489-php-ve...igin-gucu.html

    OyuncuTR adlı üyeden alıntı: mesajı görüntüle
    İsa abi seni gerek burdan gerek facebook dan takip ediyorum da hep en uçuk şeylerle uğraşıyosun, amacın nedir ?


    BHCoder adlı üyeden alıntı: mesajı görüntüle
    hayatım boyunca nefret ettim matematikten
    elinize sağlık
    ben de hayatım boyunca çok sevdim matematiği, ama üni de ki hocalarımız sağolsun soğutuyorlar beni yavaş yavaş.
  • 04-11-2010, 20:07:46
    #8
    http://tr.php.net/manual/tr/function.bcmul.php
    <?php
     echo bcmul('2342342342342342342342','234234234234234234234')
    ?>
  • 04-11-2010, 20:31:59
    #9
    AKoyun adlı üyeden alıntı: mesajı görüntüle
    http://tr.php.net/manual/tr/function.bcmul.php
    <?php
     echo bcmul('2342342342342342342342','234234234234234234234')
    ?>
    normalde 32 bit işlemcilerin geçici değişkenlere eax,ecx,edx vs. alabileceği maximum değer 4 byte tır. en büyük 4 byte 16 lık sayı

    FFFFFFFF dir onun decimal değeri de : 4294967295
    http://www.google.com.tr/search?clie...&q=4294967295&

    bu sınırlama sadece php ile alakalı değildir tüm programlama dillerinde sabittir.
    aşağıdaki kütüphaneyi kullanarak daha büyük sayılarla ne yapılması gerekiyorsa yapabilirsiniz
    http://tr.php.net/manual/tr/ref.bc.php