Programing

숫자가 홀수인지 짝수인지 테스트

lottogame 2020. 4. 5. 19:55
반응형

숫자가 홀수인지 짝수인지 테스트


PHP에서 숫자 / 변수가 홀수인지 심지어 짝수인지 알아내는 가장 간단한 방법은 무엇입니까? mod와 관련이 있습니까?

몇 가지 스크립트를 시도했지만 .. Google이 현재 제공하지 않습니다.


당신은 모드가 시작하기에 좋은 장소라고 생각하는 것이 옳았습니다. $number짝수 이면 true를 반환 하고 홀수이면 false를 반환하는 표현식이 있습니다 .

$number % 2 == 0

모든 정수 PHP 값에 대해 작동합니다 . 산술 연산자 PHP 도 참조하십시오 .

예:

$number = 20;
if ($number % 2 == 0) {
  print "It's even";
}

산출:

심지어


또 다른 옵션은 간단한 비트 확인입니다.

n & 1

예를 들면 다음과 같습니다.

if ( $num & 1 ) {
  //odd
} else {
  //even
}

예 모드를 사용하여

$even = ($num % 2 == 0);
$odd = ($num % 2 != 0);

모든 대답이 정확하고 정확하지만 한 줄에 간단한 해결책은 다음과 같습니다.

$check = 9;

어느 한 쪽:

echo ($check & 1 ? 'Odd' : 'Even');

또는:

echo ($check % 2 ? 'Odd' : 'Even');

잘 작동합니다.


(bool)($number & 1)

또는

(bool)(~ $number & 1)

다른 옵션은 마지막 숫자가 짝수인지 확인하는 것입니다.

$value = "1024";// A Number
$even = array(0, 2, 4, 6, 8);
if(in_array(substr($value, -1),$even)){
  // Even Number
}else{
  // Odd Number
}

또는 더 빠르게하려면 isset()대신 다음을 사용하십시오 array_search.

$value = "1024";// A Number
$even = array(0 => 1, 2 => 1, 4 => 1, 6 => 1, 8 => 1);
if(isset($even[substr($value, -1)]){
  // Even Number
}else{
  // Odd Number
}

또는 더 빨리 만들기 위해 ( 때때로 비트mod operator ) :

$even = array(0, 2, 4, 6, 8);
if(in_array(substr($number, -1),$even)){
  // Even Number
}else{
  // Odd Number
}

여기 내 결과에 대한 증거로 시간 테스트 가 있습니다.


나는 약간의 테스트를했는데 mod is_int&-operator 사이 에서 mod가 가장 빠르며 & 연산자가 밀접 하다는 것을 알았습니다 . is_intmod보다 거의 4 배 느립니다.

테스트 목적으로 다음 코드를 사용했습니다.

$number = 13;

$before = microtime(true);
for ($i=0; $i<100000; $i++) {
    $test = ($number%2?true:false);
}
$after = microtime(true);

echo $after-$before." seconds mod<br>";

$before = microtime(true);
for ($i=0; $i<100000; $i++) {
    $test = (!is_int($number/2)?true:false);
}
$after = microtime(true);

echo $after-$before." seconds is_int<br>";

$before = microtime(true);
for ($i=0; $i<100000; $i++) {
    $test = ($number&1?true:false);
}
$after = microtime(true);

echo $after-$before." seconds & operator<br>";

내가 얻은 결과는 꽤 일관되었습니다. 샘플은 다음과 같습니다.

0.041879177093506 seconds mod
0.15969395637512 seconds is_int
0.044223070144653 seconds & operator

2로 나눈 모든 짝수는 정수가됩니다.

$number = 4;
if(is_int($number/2))
{
   echo("Integer");
}
else
{
   echo("Not Integer");
}

PHP는 null과 빈 문자열을 자동으로 0으로 변환합니다. 그것은 모듈로에서도 발생합니다. 따라서 코드는

$number % 2 == 0 or !($number & 1)

값이 $ number = ''또는 $ number = null 인 경우 true가됩니다. 나는 그것을 좀 더 확장하기 위해 테스트했다.

function testEven($pArg){
    if(is_int($pArg) === true){
        $p = ($pArg % 2);
        if($p== 0){
            print "The input '".$pArg."' is even.<br>";
        }else{
            print "The input '".$pArg."' is odd.<br>";
        }
    }else{
        print "The input '".$pArg."' is not a number.<br>";
    }
}

The print is there for testing purposes, hence in practice it becomes:
function testEven($pArg){
    if(is_int($pArg)=== true){
        return $pArg%2;
    }
    return false;
}

이 함수는 홀수에 대해서는 1을, 짝수에 대해서는 0을, 숫자가 아니면 false를 반환합니다. 나는 항상 === true 또는 === false를 써서 (그리고 다른 프로그래머들에게) 테스트가 의도 한 것임을 알린다.


//for numbers n [0,1,2,3,4....]

if((n+2)%2==1) {
   //odd
}else {
  //even
}

0은 짝수입니다. 다시 말해, 정수의 품질이 짝수이거나 홀수 인 패리티는 짝수입니다. 0을 증명하는 가장 간단한 방법은 "짝수"의 정의에 맞는지 확인하는 것입니다. 2의 정수 배수, 특히 0 × 2입니다. 결과적으로 0은 짝수를 특징 짓는 모든 속성을 공유합니다. 는 2로 나눌 수 있고, 0은 양쪽에 홀수로 둘러싸이고, 0은 정수 (0)의 합이며, 0 개의 객체 세트는 두 개의 동일한 세트로 나눌 수 있습니다. 에서 http://en.wikipedia.org/wiki/Parity_of_zero


카운터가 이미 있다고 가정합니다. 루프 끝에서 증가하는 $ i에서, 이것은 속기 쿼리를 사용하여 작동합니다.

$row_pos = ($i & 1) ? 'odd' : 'even';

그래서 이것이 무엇을하는지, 그것은 참인지 거짓인지에 따라 본질적으로 $ i가 이상한 진술을 쿼리합니다. 반환 된 값은 변수 $ row_pos를 채 웁니다.

이것을 사용하는 것은 foreach 루프 안에 그것을 필요한 바로 앞에 배치하는 것입니다. 이것은 적절한 클래스 이름을 제공하는 매우 효율적인 라이너입니다. 이미 ID를 사용할 카운터가 이미 있기 때문입니다. 나중에 프로그램에서. 이것은이 부분을 어떻게 사용할 지에 대한 간단한 예입니다.

<div class='row-{$row_pos}'> random data <div>

이것은 각 행에 홀수 및 짝수 클래스를 제공하므로 올바른 클래스를 사용하고 인쇄 된 결과를 페이지 아래에 줄이십시오.

내가 사용하는 것에 대한 전체 예제는 id에 카운터가 적용되고 클래스에는 내 홀수 / 짝수 결과가 적용됩니다. :

$i=0;
foreach ($a as $k => $v) {

    $row_pos = ($i & 1) ? 'odd' : 'even';
    echo "<div id='A{$i}' class='row-{$row_pos}'>{$v['f_name']} {$v['l_name']} - {$v['amount']} - {$v['date']}</div>\n";

$i++;
}

요약하면 이것은 예쁜 테이블을 만드는 매우 간단한 방법입니다.


이 코드는 PHP에서 숫자가 홀수인지 또는 짝수인지 확인합니다. 예에서 $a입니다 2당신은 짝수를 얻을. 홀수가 필요하면 $a을 변경하십시오.

$a=2;
if($a %2 == 0){
    echo "<h3>This Number is <b>$a</b> Even</h3>";
}else{
    echo "<h3>This Number is <b>$a</b> Odd</h3>";
}

이 시도,

$number = 10;
 switch ($number%2)
 {
 case 0:
 echo "It's even";
 break;
 default:
 echo "It's odd";
 }

$before = microtime(true);

$n = 1000;  
$numbers = range(1,$n);

$cube_numbers = array_map('cube',$numbers);

function cube($n){      
    $msg ='even';       
    if($n%2 !=0){
        $msg = 'odd';
    }               
    return "The Number is $n is ".$msg;
}

foreach($cube_numbers as $cube){
    echo $cube . "<br/>";
}

$after = microtime(true);

echo $after-$before. 'seconds';

//checking even and odd
$num =14;

$even = ($num % 2 == 0);
$odd = ($num % 2 != 0);

if($even){
    echo "Number is even.";
} else {
    echo "Number is odd.";
}

# 입력 필드로 이것을 시도하십시오

<?php
    //checking even and odd
    echo '<form action="" method="post">';
    echo "<input type='text' name='num'>\n";
    echo "<button type='submit' name='submit'>Check</button>\n";
    echo "</form>";

    $num = 0;
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      if (empty($_POST["num"])) {
        $numErr = "<span style ='color: red;'>Number is required.</span>";
        echo $numErr;
        die();
      } else {
          $num = $_POST["num"];
      }


    $even = ($num % 2 == 0);
    $odd = ($num % 2 != 0);
    if ($num > 0){
        if($even){
            echo "Number is even.";
        } else {
            echo "Number is odd.";
        }
    } else {
        echo "Not a number.";
    }
    }
?>

참고 URL : https://stackoverflow.com/questions/7959247/test-if-number-is-odd-or-even

반응형