我想制作一個程式,可以計算以 9 結尾的前 5000 個主要數字:
我試過了,但沒有用:
$div9 = [];
$x = 2;
while (count($div9) <= 5000) {
function findPrime($x)
{
for ($i = 2; $i < ($x / 2); $i ) {
$rest = $x % $i;
if ($rest == 0) {
break;
}
}
return $x;
}
$primeList[] = $x;
for ($j = 0; $j < count($primeList); $j ) {
$array = array_map('intval', str_split($primeList[$j]));
if (end($array[$j]) === 9) {
return $primeList[$j];
$div9[] = $primeList[$j];
}
}
$x ;
}
請問有什么提示嗎?
uj5u.com熱心網友回復:
你不應該在你的 while 回圈中定義一個函式
這應該有幫助
function check_prime($num)
{
if ($num == 1)
return false;
for ($i = 2; $i <= $num/2; $i )
{
if ($num % $i == 0)
return false;
}
return true;
}
$div9 = [];
$i = 0;
while(count($div9) < 5000) {
if($i%10 === 9 && check_prime($i)) {
$div9[] = $i;
}
$i ;
}
uj5u.com熱心網友回復:
主題的另一個變體,該isPrime
函式是從 Javascript cryptoJS 庫移植的。
# Adapted from CryptoJS v3.1.2
function isPrime( $n=0 ){
$r=sqrt( $n );
for( $f=2; $f <= $r; $f ){
if( !( $n % $f ) )return false;
}
return true;
}
function isFactor($n,$f){
return $n % 10 == $f;
}
$limit=5000;
$primes=[];
$x=2;
$f=9;
while( count( $primes ) < $limit ){
if( isPrime( $x ) && isFactor( $x, $f ) )$primes[]=$x;
$x ;
}
printf('<pre>%s</pre>',print_r($primes,true));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504025.html
上一篇:PHP-遍歷不同的值型別
下一篇:Laravel背包大寫