اذهب إلى المحتوى

السؤال

نشر

هل يمكن كتابة الكود بشكل أفضل من خوارزمية إقليدس؟

أرجو إرشادي

<?php

function PGCD($A,$B){

    $d = 0;


        if ($A<$B) {

            $A = $A + $B;
            $B = $A - $B;
            $A = $A - $B;
        } 

        if ($A < 0) {

            $A = $A * (-1);

        }

       if ($B < 0){
        $B = $B * (-1);

       }

    while ($B > 0){

        $d =  ($A%$B);
        $A = $B;
        $B = $d;
    };

    return ('PGCD A and B is '. ' '. $A);


};

echo PGCD(-9348,98);

 

kader.png

Recommended Posts

  • 0
نشر

إن القاسم المشترك الأكبر PGCD يمكن حسابه بأكثر من طريقة، وذلك حسب الخوارزمية الرياضية التي تقوم بتطبيقها، أنت في الشيفرة لديك تطبق خوارزمية اقليدس.

يوجد طريقة أخرى وهي حساب جداء العددين تقسيم القاسم المشترك الأكبر لهما.

PGCD(a, b) = a * b / GCD(a, b)

توفر PHP دالة حساب GCD، ثم نطبق الفكرة في السطر السابق

<?php
 
$a = 15;
$b = 30;

$gcd = gmp_gcd($a, $b);

echo "GCD: " . gmp_strval($gcd) . "\n";

echo "PGCD: " . ($a * $b / gmp_strval($gcd) ) . "\n";

  
?>

أي خوارزمية أخرى يتوجب عمل برهان لها، ثم تطبيقها لأنه بدون برهان لايمكن عمل خوارزيمة سليمة.

 

gccd.jpg

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...