လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP မှ GMP_ProB_PRIME () function သည်နံပါတ်သည် PRIME နံပါတ်ရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။

PHP မှ GMP_ProB_PRIME () function သည်နံပါတ်သည် PRIME နံပါတ်ရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။

gitbox 2025-06-06

အဓိကနံပါတ်ကဘာလဲ

PRIME နံပါတ်များ (PRIME နံပါတ်များ) သည် 1 နှင့်သူ့ဟာသူအားဖြင့် 1 နှင့်သူ့ဟာသူသဘာဝတရားများ၌သာစားနိုင်သည့်နံပါတ်များကိုရည်ညွှန်းသည်။ ဥပမာ 2, 3, 5, 7 စသဖြင့် Prime Respect တွင်အထူးသဖြင့်အများကိန်းနှင့်တရားစီရင်ခြင်းတွင်မျိုးဆက်နှင့်တရားစီရင်ခြင်းသည်အထူးသဖြင့်အရေးပါသည်။

နံပါတ်တစ်ခုဆိုသည်မှာနံပါတ်တစ်ခုဟုတ်မဟုတ်ကိုတိကျစွာဆုံးဖြတ်ခြင်းသည်လုံခြုံရေး algorithm ကိုတည်ဆောက်ရန်အခြေခံဖြစ်သည်။ Encryption Algorithms ၏ဖွံ့ဖြိုးတိုးတက်မှုနှင့်အတူကြီးမားသောကိန်းဂဏန်းများသည် PRESESS ၏အကျိုးရှိစွာဆုံးဖြတ်ချက်ချခြင်းနှင့်အတူ algorithm ဒီဇိုင်း၏အရေးကြီးသောအစိတ်အပိုင်းတစ်ခုဖြစ်လာသည်။

gmp_prob_prime () function ကိုမိတ်ဆက်ပေးခြင်း

GMP_ProB_PREME () သည် PHP မှပါ 0 င်သည့်လုပ်ဆောင်ချက်တစ်ခုမှာနံပါတ်တစ်ခုသည်အဓိကနံပါတ်တစ်ဟုတ်မဟုတ်ဆုံးဖြတ်ရန်နှင့် GMP extension အပေါ်မူတည်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 
int gmp_prob_prime(GMP $a [, int $reps = 10])

parameter သည်ဖော်ပြချက်:

  • $ A : စစ်တမ်းကောက်ယူခံရမည့်နံပါတ် (GMP အမျိုးအစား)
  • $ reps : စမ်းသပ်မှုထပ်ခါတလဲလဲ, ပုံမှန် 10 ဖြစ်ပါတယ်

Return Value ဖော်ပြချက်:

  • 0 : က PRIME နံပါတ်မဟုတ်ကြောင်းသေချာသည်
  • ပြန်လာ 1 : ဖြစ်ကောင်း PRIME နံပါတ်
  • ပြန်လာ 2 - အများဆုံးဖွယ်ရှိနံပါတ်အရေအတွက်

ဤလုပ်ဆောင်ချက်သည် GMP extension support လိုအပ်ကြောင်းသတိပြုပါ။ Php.ini တွင် GMP ကို ​​configure လုပ်ခြင်းဖြင့်ပြုလုပ်နိုင်သည်ကိုသတိပြုပါ။

Primitive Properties Test အတွက်အခြေခံ algorithm ကိုစစ်ဆေးသည်

PHP ၏ GMP_PROB_PRIME () function ၏နောက်ခံအလွှာ၏နောက်ခံအလွှာသည်ဖြစ်နိုင်ခြေ algorithm ဖြစ်သော Solovay-straperen Testing algorithm ကိုအခြေခံသည်။ ၎င်း၏အချိန်ရှုပ်ထွေးမှုသည် အို (Log3 N) သည် (k log3 n) သည်။ K သည်စမ်းသပ်မှုအရေအတွက်နှင့် N သည်စာမေးပွဲအရေအတွက်ဖြစ်သည်။

algorithm ၏အဓိကခြေလှမ်းများကိုခွဲခြမ်းစိတ်ဖြာခြင်း

1 ။ ကျပန်းတစ် ဦး နှစ် ဦး နှစ်ဖက်သီးသန့်သီးသန့်နံပါတ်ခကိုရွေးချယ်ပါ

 
$gmp_b = gmp_random_range(2, $gmp_n);

gmp_random_range () မှတဆင့် 2 နှင့် n အကြားကျပန်းနံပါတ်ကိုထုတ်လုပ်ပါ။

2 ။ အကြီးမြတ်ဆုံးဘုံ Divisor GCD ကိုတွက်ချက်ပါ

 
$gmp_gcd = gmp_gcd($gmp_b, $gmp_n);

GCD (ခ, n) ≠ 1 ဆိုလျှင်နှစ် ဦး နှစ်ဖက်အပြန်အလှန်သဟဇာတမဖြစ်ရဟုဆိုလိုသည်။

3 ။ quadratic အကြွင်းအကျန်ကိုတွက်ချက်ခြင်းနှင့် Jacobi သင်္ကေတကိုစစ်ဆေးပါ

 
$gmp_r = gmp_powm($gmp_b, gmp_div_q($gmp_n, 2), $gmp_n);
$gmp_jacobi = gmp_jacobi($gmp_b, $gmp_n);
<p>if ($gmp_jacobi == 0 || $gmp_r != $gmp_jacobi) {<br>
return 0;<br>
}<br>

Euler ၏ခွဲခြားဆက်ဆံမှုနည်းလမ်းအားဖြင့် quadratic အကြွင်းအကျန်ကိုအတည်ပြုသည်။ အကယ်. အခြေအနေကိုမလိုက်နာပါက N သည်အဓိကနံပါတ်မဟုတ်ပါ။

4 ။ ခ၏ကျပန်းစမ်းသပ်မှုပြန်

အထက်ပါအဆင့်များကိုသတ်မှတ်ထားသောအကြိမ်အရေအတွက် (Parameter $ ကိုယ်စားလှယ်များမှ ဆုံးဖြတ်သည်)

 
for ($i = 0; $i < $reps; $i++) {
    $gmp_b = gmp_random_range(2, $gmp_n);
    if (gmp_gcd($gmp_b, $gmp_n) != 1) return 0;
    $gmp_jacobi = gmp_jacobi($gmp_b, $gmp_n);
    $gmp_r = gmp_powm($gmp_b, gmp_div_q(gmp_sub($gmp_n, 1), 2), $gmp_n);
    if ($gmp_jacobi == 0 || $gmp_r != $gmp_jacobi) return 0;
}
return 1;

gmp_probob_prime () function ကိုအသုံးပြုမှုဥပမာ

 
$gmp_n = gmp_init('101');
$prob = gmp_prob_prime($gmp_n);

if ($prob == 2) {
    echo "It is likely to be a prime.";
} elseif ($prob == 0) {
    echo "It is not prime.";
} else {
    echo "It might be a prime.";
}

ဥပမာတွင် 101 ကို "PRIME နံပါတ်ဖြစ်ဖွယ်ရှိဖွယ်ရှိ" အဖြစ်အသိအမှတ်ပြုသည်။

အကျဉ်းချုပ်

GMP_ProB_PREME () သည် PHP တွင်ကြီးမားသောနံပါတ် preness test များကိုလုပ်ဆောင်ရန်အတွက်အရေးကြီးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဖြစ်နိုင်ချေရှိသော algorithm solovay-strasen နှင့်ပေါင်းစပ်ပြီးနံပါတ်သည် PRIME နံပါတ်ရှိမရှိထိရောက်စွာဆုံးဖြတ်နိုင်သည်။ ဒီ function ဟာအထူးသီးသန့်ကိန်းဂဏန်းကြီးများ, encryption algorithms, digital signatures, blocktains စသဖြင့်ထုတ်လုပ်ရန်သို့မဟုတ်အတည်ပြုရန်လိုအပ်သည်။