• 01-04-2021, 12:48:19
    #1
    Instagram mavi tik✅
    arkadaşlar phpde bölenleri bulmak için bu kodu kullanıyorum ama en büyükk böleni nasıl bulacagımı bulamadım nasıl yapabilirim

    <?
    php $sayi=120; for($i=2;$i<=$sayi/2;$i++)
    if ($sayi%$i==0)
    $bolenler[]=$i;

    echo "<u>$sayi sayısının tam bölenleri:</u>
    <br>"; for ($i=0;@$bolenler[$i];$i++)
    echo $bolenler[$i],"<br>";
    ?>
  • Kabul Edilen Cevap
    • 0 Beğeni
      Omerfd haklı. Kendisi en büyük böleni olur.
      Ayrıca sizin kodunuz Asal sayılar için sonuç veremez. (Kendisi ve 1'e bölünmesi koşulunu kontrol edemezsiniz) Kendisi hariç en büyük bölenini bulacaksanız şunu deneyebilirsiniz:

      <?php
          $sayi=131;
          for($i = intval(floor($sayi/2)); $i>=1; $i--)
          {
              
              if ($sayi % $i == 0)
              {
                  if($i==1){
                      echo $sayi .' bir asal sayıdır.<br />';
                  }else{
                      echo 'En büyük tam bölen: '.$i.'<br />';
                      break;
                  }
              }else{
                  //İsteğe bağlı debug
                  //echo '$sayi: '.$sayi .' - $i: '. $i. ' - $sayi % $i ='.$sayi % $i. '<br />';
              }
          }
      Sizin kodunuzda denediğimde de max() çalışıyor.

      <?php
          $sayi=120;
          for($i=2;$i<=$sayi/2;$i++)
              if ($sayi%$i==0)
                  $bolenler[]=$i;
              
          echo 'En büyük bölen: '. max($bolenler);
  • 01-04-2021, 12:51:17
    #2
    $enbuyuk = max($bolenler);
  • 01-04-2021, 13:03:54
    #3
    Instagram mavi tik✅
    burakozdmr adlı üyeden alıntı: mesajı görüntüle
    $enbuyuk = max($bolenler);
    çalışmadı hocam
  • 01-04-2021, 13:08:00
    #4
    biraz kaçak bir yöntem olacak ama bulunan değerleri bubble sort algoritmasıyla küçükten büyüğe sıralayın, sonucu bir diziye atayın, en son indis en büyük bölen olacağı için direkt bulmuş olursunuz
  • 01-04-2021, 13:08:54
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hocam bölenleri arrayde sorunsuz duruyorsa max() ile alabilmeniz lazım arkadaşın attığı gibi.
  • 01-04-2021, 13:09:27
    #6
    PHP & Flutter & Laravel
    Aşağıdaki kodları kullanabilirsiniz, max($bolenler) işe yaramadıysa ama normalde çalışması gerekiyor arkadaşlarında dediği gibi.

    
    $maxs = array_keys($bolenler, max($bolenler));
    $en_buyuk_deger=$bolenler[$maxs[0]];
    echo $en_buyuk_deger ;
    VEYA sıralama bu şekilde olup en büyük değer en sonda oluyorsa sürekli bu şekilde de alabilirisiniz


    end($bolenler)
  • 01-04-2021, 13:12:29
    #7
    $sayi = 120;
    for($i = 2;$i<=$sayi;$i++){
         if($sayi%$i == 0){
                 $bolenler[] = $i;
         }
    }
    echo max($bolenler);
  • 01-04-2021, 13:17:38
    #8
    En büyük bölen her zaman sayının kendisidir zaten.
  • 01-04-2021, 13:28:04
    #9
    Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.
    Omerfd haklı. Kendisi en büyük böleni olur.
    Ayrıca sizin kodunuz Asal sayılar için sonuç veremez. (Kendisi ve 1'e bölünmesi koşulunu kontrol edemezsiniz) Kendisi hariç en büyük bölenini bulacaksanız şunu deneyebilirsiniz:

    <?php
        $sayi=131;
        for($i = intval(floor($sayi/2)); $i>=1; $i--)
        {
            
            if ($sayi % $i == 0)
            {
                if($i==1){
                    echo $sayi .' bir asal sayıdır.<br />';
                }else{
                    echo 'En büyük tam bölen: '.$i.'<br />';
                    break;
                }
            }else{
                //İsteğe bağlı debug
                //echo '$sayi: '.$sayi .' - $i: '. $i. ' - $sayi % $i ='.$sayi % $i. '<br />';
            }
        }
    Sizin kodunuzda denediğimde de max() çalışıyor.

    <?php
        $sayi=120;
        for($i=2;$i<=$sayi/2;$i++)
            if ($sayi%$i==0)
                $bolenler[]=$i;
            
        echo 'En büyük bölen: '. max($bolenler);