如何打印否定输出?

时间:2016-11-29 23:13:29

标签: php

function count_digit($number) {
   return strlen($number);
 }

  for($a=1; $a<=5000; $a++){ //loop
        $i=$a;
        $i= (string)$i ;

        $num=$a;
        $number_of_digits = count_digit($num);
        if ($number_of_digits == 1){

            $total = $a+$i[0];

        }
        elseif ($number_of_digits == 2){

            $total = $a+$i[0]+$i[1];


        }

         elseif ($number_of_digits == 3){

            $total = $a+$i[0]+$i[1]+$i[2];

        }

         elseif ($number_of_digits == 4){

            $total = $a+$i[0]+$i[1]+$i[2]+$i[3];

        }


        echo $total. '<br>';       
 }

输出a:1 2 3 4 5 6 7 8 ... 5000

输出总数:2 4 6 8 10 12 14 16 18 11 13 15 17 19 21 23 25 27 29 22 24 26 28 三十 32 34 36 38 40 33 35 37 39 41 43 45 47 49 51 44 46 48 50

如何使否定输出总数:1 3 5 7 9 20 31 42 53

1 个答案:

答案 0 :(得分:0)

好的,现在当我理解你的要求时,让我们采取这种方法。

您拥有的所有数字都不是自编号,因此我们将它们带到数组,以及所有数字0-5000以进行比较。

all_numbers数组中但不在not_self_numbers数组中的所有数字必须为self numbers

<?php
$not_self_numbers = array();
$all_numbers = array();

for($a=1; $a<=5000; $a++){ //loop
    $i=$a;
    $i= (string)$i ;
    $all_numbers[] = $a;

    $num=$a;
    $number_of_digits = strlen($num);
    if ($number_of_digits == 1){

        $total = $a+$i[0];
        $not_self_numbers[] = $total;

    }
    elseif ($number_of_digits == 2){

        $total = $a+$i[0]+$i[1];
        $not_self_numbers[] = $total;


    }

        elseif ($number_of_digits == 3){

        $total = $a+$i[0]+$i[1]+$i[2];
        $not_self_numbers[] = $total;

    }

        elseif ($number_of_digits == 4){

        $total = $a+$i[0]+$i[1]+$i[2]+$i[3];
        $not_self_numbers[] = $total;

    }


}
$self_numbers = array_diff($all_numbers, $not_self_numbers);

foreach($self_numbers as $number) {
    echo $number."<br>";
}