Каков самый простой самый простой способ узнать, является ли число/переменная нечетной или даже PHP? Это как-то связано с модом? Я пробовал несколько скриптов, но.. Google не доставляет в настоящий момент.
user1022585 31 окт. 2011, в 19:22
Поделиться
mod — это общий сокращенный термин для ‘modulo’, он же модульная арифметика.
Marc B 31 окт. 2011, в 20:20
Поделиться:
14 ответов
Лучший ответ
Вы были правы, думая, что мода — хорошее место для начала. Вот выражение, которое вернет true, если $number равно, false, если нечетно:
$number % 2 == 0
Пример:
$number = 20; if ($number % 2 == 0)
Tim Cooper 31 окт. 2011, в 21:42
Поделиться
Если вы используете это в циклах или больших количествах, вы можете рассмотреть проверку битов, предложенную Arius2038, которая очень быстрая.
Бит-чек — мой предпочтительный метод для нечетных / четных проверок.
Martijn 03 июль 2013, в 09:48
Работает нормально, но мне просто интересно, какая логика стоит за этим? Почему задано значение true, если «10 == 0»?
Паскаль с нуля [ч10]. Вывод массива, задача с четными числами
snlan 24 сен. 2014, в 11:42
Логика в том, что любое четное число делится на 2 без остатка. Если бы вы использовали $ number% 10, а ваш $ number был 20, он вернул бы true, но не если бы ваш $ number был 22. Вы могли бы использовать $ number% 10, если вы пытались найти каждый 10-й элемент в цикле, например ,
crdunst 25 сен. 2014, в 15:33
Hendry Tanaka 23 окт. 2014, в 02:22
Joey Sabey 20 март 2015, в 14:25
Да, просто так, спасибо, кстати.
Hendry Tanaka 20 март 2015, в 14:29
Могу ли я предложить тройной = для улучшения дробной скорости: $number % 2 === 0
kasimir 11 июнь 2015, в 11:20
Показать ещё 5 комментариев
Другим вариантом является простая проверка бит.
n 1 ) < //odd >else < //even >
Pawel Dubiel 05 фев. 2012, в 23:26
Поделиться
Это определенно самый быстрый способ при использовании целых чисел в языке, подобном C, с большим отрывом. Кто-нибудь делал тесты, чтобы определить, верно ли это и для PHP?
thomasrutter 05 дек. 2013, в 00:03
Вероятно, это самый быстрый способ, если PHP-движок был хорошо закодирован.
Rolf 18 дек. 2013, в 16:19
Я бы сказал, что это самый быстрый и прямой путь.
Отлично.
Robbiegod 27 март 2014, в 19:03
kasimir 11 июнь 2015, в 11:25
Показать ещё 2 комментария
Да, используя мод
$even = ($num % 2 == 0); $odd = ($num % 2 != 0);
Aaron W. 31 окт. 2011, в 21:11
Поделиться
Другая опция — проверить, является ли последняя цифра четным числом:
$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 )
C++ | Определение чётности или нечётности числа
$even = array(0, 2, 4, 6, 8); if(in_array(substr($number, -1),$even))< // Even Number >else < // Odd Number >
Вот тест времени в качестве доказательства моих результатов.
Subin 10 окт. 2013, в 17:35
Поделиться
To Downvoter: Могу ли я узнать, почему вы проголосовали?
Subin 03 март 2014, в 13:58
Это очень дорого по сравнению с другими методами.
grantwparks 22 апр. 2015, в 17:02
Subin 24 апр. 2015, в 05:37
Это не секунды в тесте, они на самом деле намного меньше. Так что на первый взгляд это звучит разумно. Но подумайте об этом: в результате мод вышел на 2.0xxxx единиц времени. В то время как isset вышел на 2.5xxxx единиц времени. Это увеличение времени выполнения на 25%. Насколько разумно это звучит сейчас;)
grantwparks 01 май 2015, в 15:40
Subin 03 май 2015, в 14:43
Subin 16 март 2016, в 03:26
Интересный способ мышления, хотя. Это в основном десятичная версия $num 1)
(bool)(~ $number -оператором мода является самым быстрым, за которым следует $before = microtime(true); for ($i=0; $i $after = microtime(true); echo $after-$before.» seconds mod
«; $before = microtime(true); for ($i=0; $i $after = microtime(true); echo $after-$before.» seconds is_int
«; $before = microtime(true); for ($i=0; $i $after = microtime(true); echo $after-$before.» seconds ;
Результаты, полученные мной, были довольно последовательными. Здесь образец:
0.041879177093506 seconds mod 0.15969395637512 seconds is_int 0.044223070144653 seconds » примерно на 10% быстрее, чем мод (проверено на массиве со случайными целочисленными значениями)
Pawel Dubiel 05 дек. 2013, в 09:08
Хотя все ответы являются правильными и правильными, простое решение в одной строке:
$check = 9;
echo ($check
echo ($check % 2 ? ‘Odd’ : ‘Even’);
работает очень хорошо.
Tarik 09 май 2016, в 16:25
Поделиться
Все четные числа, деленные на 2, приведут к целому числу
$number = 4; if(is_int($number/2)) < echo(«Integer»); >else
David S. 05 июль 2012, в 20:15
Поделиться
в то время как это будет работать, это не лучший способ сделать это
Niko Sams 10 окт. 2012, в 20:26
PHP преобразует нуль и пустую строку автоматически в нуль.
Это происходит и с модулем. Поэтому код
$number % 2 == 0 or !($number if(is_int($pArg) === true)< $p = ($pArg % 2); if($p== 0)< print «The input ‘».$pArg.»‘ is even.
«; >else< print «The input ‘».$pArg.»‘ is odd.
«; > >else< print «The input ‘».$pArg.»‘ is not a number.
«; > > 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, чтобы позволить мне (и другим программистам) знать, что тест имеет такое же значение.
Loek Bergman 01 июнь 2015, в 10:01
Поделиться
Этот код проверяет, является ли число нечетным или даже в PHP. В примере $a есть 2 , и вы получите четное число. Если вам нужно нечетное значение, измените значение $a
$a=2; if($a %2 == 0)< echo «
This Number is $a Even
«; >else< echo «
This Number is $a Odd
«; >
Narendra Chauhan 12 янв. 2015, в 20:53
Поделиться
Я делаю предположение, что есть счетчик уже на месте. в $i, который увеличивается в конце цикла.
Это работает для меня, используя сокращенный запрос.
$row_pos = ($i
Итак, что он делает, ну, он запрашивает выражение, которое мы делаем, в сущности, $i является нечетным, в зависимости от того, будет ли его истинное или ложное решение о том, что возвращается. Возвращаемое значение заполняет нашу переменную $row_pos
Мое использование этого заключается в том, чтобы поместить его внутри цикла foreach, прямо перед тем, как он мне понадобится. Это делает его очень эффективным одним лайнером, чтобы дать мне соответствующие имена классов, потому что у меня уже есть счетчик для id использовать позже в программе. Это краткий пример того, как я буду использовать эту часть.
random data
Это дает мне нечетные и четные классы в каждой строке, поэтому я могу использовать правильный класс и нарисовать напечатанные результаты на странице.
Полный пример того, что я использую, отмечает, что идентификатор имеет счетчик, примененный к нему, и класс имеет мой нечетный/четный результат, примененный к нему.:
$i=0; foreach ($a as $k => $v) < $row_pos = ($i echo » — — n»; $i++; >
это дает мне очень простой способ создать симпатичную таблицу.
Источник: overcoder.net
Разработчику о работе с 1С:Предприятие, Pascal, Паскаль
Решение вопросов, возникающие при автоматизации учета с помощью 1С:Предприятие. Паскаль.
Pascal (Паскаль). Вывод чётных и нечётных чисел массива в Паскале. Способ первый.
05.05.2017 |
Автор Дмитрий
Pascal (Паскаль). Вывод чётных и нечётных чисел массива в Паскале. Способ первый.
Четное число — это число, которое делится на 2 (два) без остатка. Если есть остаток — то число называется нечетным.
Используем функцию: mod, рассмотренную ранее.
program Even_Task; //программа вывод чётных и нечётных чисел массива в Паскале const n = 10; var i, i_Num: integer; i_MasNum: array[1..n] of integer; begin //заполяем массив i_MasNum[1] := 5; i_MasNum[2] := 340; i_MasNum[3] := -14; i_MasNum[4] := 31; i_MasNum[5] := 18; i_MasNum[6] := 1033; i_MasNum[7] := 11; i_MasNum[8] := 120; i_MasNum[9] := 18; i_MasNum[10] := 81; for i := 1 to n do begin i_Num := i_MasNum[i] mod 2; if i_Num = 0 then Writeln(‘Четное число: ‘, i_MasNum[i]) else Writeln(‘Нечетное число: ‘, i_MasNum[i]); end; //завершение работы программы WriteLn(‘Нажмите , чтобы выйти.’); ReadLn(); end.
Вывод четных и нечетных чисел массива в Паскале.
Рубрика: Pascal (Паскаль) — задачи и решения
Источник: info1c.com
Задача — Посчитать четные и нечетные цифры числа — программирование на разных языках
Задача — Посчитать четные и нечетные цифры числа
— программирование на Pascal, Си, Кумир, Basic-256, Python
Посчитать четные и нечетные цифры введенного натурального числа. Например, если введено число 34560, то у него 3 четные цифры (4, 6 и 0) и 2 нечетные (3 и 5).
- Присвоить переменным-счетчикам четных (even) и нечетных (odd) цифр значение 0.
- Пока введенное число не уменьшится до нуля выполнять нижеследующие действия:
- Если число четное (делится нацело на 2), значит последняя его цифра четная и надо увеличить на 1 переменную even.
- Иначе число нечетное и следует добавить 1 к переменной odd.
- Убрать последнюю цифру числа путем деления числа нацело на 10.
Pascal
var n: word;
even, odd: byte;
begin
readln(n);
even := 0;
odd := 0;
while n > 0 do begin
if n mod 2 = 0 then
even := even + 1
else
odd := odd + 1;
n := n div 10;
end;
writeln(‘четных ‘, even);
writeln(‘нечетных ‘, odd);
end. 56709
четных 2
нечетных 3
Язык Си
main() int n,even,odd;
scanf(«%d»,
even = 0; // четные
odd = 0; // нечет.
while (n>0) if (n%2 == 0) even += 1;
else odd += 1;
n = n/10;
>
printf(«четных — %d, нечетных — %dn», even, odd);
> 100238
четных — 4, нечетных — 2
Python
n = int(input())
even=odd=0
while n>0:
if n%2 == 0:
even += 1
else:
odd += 1
n = n//10
print(«четных — %d, нечетных — %d» % (even, odd)) 12098
четных — 3, нечетных — 2
КуМир
алг чет_нечет
нач
цел n, even, odd
ввод n
even := 0
odd := 0
нц пока n > 0
если mod(n,2) = 0 то even := even + 1
иначе odd := odd + 1
все
n := div(n,10)
кц
вывод «Четных: «, even, нс
вывод «Нечетных: «, odd
кон 308591
Четных: 2
Нечетных: 4
Basic-256
input n
even=0
odd=0
while n>0
if n%2 = 0 then
even = even + 1
else
odd = odd + 1
endif
n = n10
endwhile
print «Четных » + even
print «Нечетных » + odd 734721
Четных 2
Нечетных 4
Источник: ars-games.ru