我有以下代码,从数组输出所有素数。我想得到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);
答案 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;
}
}
?>