素数之和

时间:2014-11-29 17:16:59

标签: php

我有以下代码,从数组输出所有素数。我想得到ex:2 + 3 + 5 = 10的输出总和,任何暗示如何得到它?

$n = array(1,2,3,4,5,6);

function prime($n){


    for($i=0;$i<= count($n);$i++){

        $counter = 0; 
        for($j=1;$j<=$i;$j++){ 

            if($i % $j==0){ 

                $counter++;
            }
        }

        if($counter == 2){

            print $i."<br/>";
        }
    }
}


print prime($n);

5 个答案:

答案 0 :(得分:0)

然后这应该适合你:

(这里我使用$sum我在foreach循环之前初始化,然后使用+=运算符将总和加在一起)

<?php

    $n = array(1,2,3,4,5,6);

    function prime($n){
        $sum = 0;
        foreach($n as $k => $v) {
            $counter = 0; 
            for($j = 1; $j <= $v; $j++) { 
                if($v % $j == 0)
                    $counter++;

            }

            if($counter == 2) {
                echo $v."<br/>";
                $sum += $v;
            }

        }
        echo "Sum: " . $sum;

    }

    prime($n);


?>

输出:

2
3
5
Sum: 10

答案 1 :(得分:0)

您可以尝试这样的事情:

function isPrime($n){
    if($n == 1) return false;
    if($n == 2) return true;
    for($x = 2; $x <= sqrt($n); $x++){
        if($n % $x == 0) return false;
    }
    return true;
}

$sum = 0;
$n = array(1,2,3,4,5,6);
foreach($n as $val){
    if(isPrime($val)) {
        echo $val . "<br />";
        $sum += $val;
    }
}
echo "Sum: " . $sum;

答案 2 :(得分:0)

正如上面评论的@IMSoP,一个选项是将素数列表编译成一个新数组:

$m = [];

// looping code...

// If prime:
array_push( $m, $primeNumber );

然后,当您完成后,您可以执行打印机制:

print implode( "<br />", $m );

然后你可以做你的求和机制:

print "<p>Sum: " . array_sum( $m ) . "</p>";

这里的额外好处是你可以将每个功能分成它自己的功能或方法(你应该做好设计)。

答案 3 :(得分:0)

试试这个

<?php

define('N', 200);

function isPrime($num) 
{
    if ($num == 2 || $num == 3) { return 1; }
    if (!($num%2) || $num<1)    { return 0; }

    for ($n = 3; $n <= $num/2; $n += 2) {
        if (!($num%$n)) {
            return 0;
        }
    }

    return 1;
}

for ($i = 2; $i <= N; $i++) {
    if (isPrime($i)) {
        $sum += $i;
    }
}

echo $sum;

答案 4 :(得分:-1)

<?php

    $num = 100;
    for($j=2;$j<$num;$j++)
    {
            for($k=2;$k<$j;$k++)
            {
                    if($j%$k==0)
                    {
                      break;
                    }

            }
            if($k==$j)
            {
                    $prime_no[]=$j;
            }

    }

    echo  "<pre>";
    print_r($prime_no);
    echo  "</pre>";
    for($j=0;$j<count($prime_no);$j++)
    {
            $myprimeAdd = $prime_no[$j] + $prime_no[$j+1];
            if(in_array($myprimeAdd,$prime_no))
            {
                     echo "Resultant Prime No:-", $myprimeAdd;
                     echo nl2br("\n");
                     break;
            }

        }

?>