Как найти переменную нечетного числа

Лучший ответ

Darth Vader

Мыслитель

(7640)


12 лет назад

Функция odd(x) определяет нечетное ли число. Используй ее
if(odd(x)) then writeln(‘Число нечетное’);

Остальные ответы

Владислав Секисов

Профи

(759)


12 лет назад

делением с остатком, если есть остаток при делении то число нечет! вроде так

dr.Drew

Просветленный

(34051)


12 лет назад

если x mod 2 = 0 – четное

Serega

Гуру

(2908)


12 лет назад

if not(a mod 2 =0)
Если число не делится на 2 без остатка

Сали-Мали

Просветленный

(29246)


12 лет назад

k mod 2 <> 0 – при делении числа k на 2 остаток от деления не равен нулю

wer rewr

Знаток

(449)


4 года назад

if (a mod 2<>0) then

Если числа, среди которых нужно найти нечетные, содержатся в массиве, то можно воспользоваться методом filter(), который позволяет отфильтровать массив по заданному нами критерию:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// функция-предикат isOdd() возвращает true, если переданное в неё число нечётное
const isOdd = (num) => num % 2 !== 0;

// метод filter() возвращает новый массив, состоящий из только из тех элементов первоначального массива, на которых функция-колбэк вернёт true
const odd = numbers.filter(isOdd);

console.log(odd); // => [1, 3, 5, 7, 9]

I tried to recursion those arrays to find odd/even numbers then push them to newArr but the result, not an array, that result is the string with numbers the result after found the odd/even numbers.

this is the code i wrote,

function odd(nums){
  var result = [];
  if(nums.length === 0) {
    return result;
  } else  if (nums[0] % 2 === 0){
    result.push(nums[0])
    // return odd(nums.slice(1))
  };
  return result + odd(nums.slice(1));
};

var arr = [1,8,3,4,4,5,9,13,13,9,10];
var print = odd(arr);
console.log(print)

if i don’t write return result + odd(nums.slice(1)); the result nothing / undefined,

can anyone help me to explain why that result in a string, not an array I wanted

asked Jan 8, 2019 at 10:07

Zum Dummi's user avatar

You need to concat arrays. + does only work for strings or for numbers.

BTW, after block statements { ... }, you do not need a semicolon.

function odd(nums){
    var result = [];
    if (nums.length === 0) {
        return result;
    } 
    if (nums[0] % 2 === 0) {
        result.push(nums[0]);
    }
    return result.concat(odd(nums.slice(1)));
}

var arr = [1, 8, 3, 4, 4, 5, 9, 13, 13, 9, 10];
var print = odd(arr);
console.log(print);

answered Jan 8, 2019 at 10:08

Nina Scholz's user avatar

Nina ScholzNina Scholz

374k25 gold badges343 silver badges385 bronze badges

11

Recursion is probably a bad idea in JS, you should use it unless there is no better way to solve a problem. It will be slower and possibly result in overflow, if too many calls of recursive function is made.

To get the result you needed, it is better to use array filter method. It is clearer and faster.

var arr = [1,8,3,4,4,5,9,13,13,9,10];
var odd = arr.filter(n => !(n % 2))
console.log(odd)

As for the original question, I’d do it this way:

function odd(nums, result = []){
  if (!nums.length) return result; // no need for else, this way clearer
  if (nums[0] % 2 === 0) result.push(nums[0])
  return odd(nums.slice(1), result)
};

var arr = [1,8,3,4,4,5,9,13,13,9,10];
console.log(odd(arr))

!!! Caution, next snippet WILL result in StackOverflow !!!

You may decrease array length to 10000 to check that it will work just fine.

function odd(nums, result = []){
  if (!nums.length) return result; // no need for else, this way clearer
  if (nums[0] % 2 === 0) result.push(nums[0])
  return odd(nums.slice(1), result)
};

const arr = Array.from({length: 100000}, (_,i) => i)
const result = odd(arr)
console.log(`Array length: ${arr.length}`)
console.log(`Result length: ${result.length}`)
console.log(result.slice(0,5))

answered Jan 8, 2019 at 10:11

Valery Baranov's user avatar

6

You could use concat method.

function odd(nums){
  var result = [];
  if(nums.length === 0) {
    return result;
  } else  if (nums[0] % 2 === 0){
    result.push(nums[0])
    // return odd(nums.slice(1))
  }
  return result.concat(odd(nums.slice(1)));
}

var arr = [1,8,3,4,4,5,9,13,13,9,10];
var print = odd(arr);
console.log(print)

Cid's user avatar

Cid

14.8k4 gold badges28 silver badges45 bronze badges

answered Jan 8, 2019 at 10:08

Mihai Alexandru-Ionut's user avatar

Another approach would be to pass the array containing the result as parameter, since it will be a reference, you don’t have to return anything.

function odd(nums, result)
{
    if(nums.length != 0)
    {
        if (nums[0] % 2 === 0)
        {
            result.push(nums[0]);
        }
        odd(nums.slice(1), result);
    }
}

var arr = [1,8,3,4,4,5,9,13,13,9,10];
var result = [];
odd(arr, result);
console.log(result)

answered Jan 8, 2019 at 10:16

Cid's user avatar

CidCid

14.8k4 gold badges28 silver badges45 bronze badges

1

Instead of the concat you need in place of the string concatenation + you use now, better use filter

var odd = [], 
   even = [1,8,3,4,4,5,9,13,13,9,10]
  .filter(function(x) { if (x % 2 === 0) return true; else odd.push(x) } );
console.log(odd,even)

answered Jan 8, 2019 at 10:11

mplungjan's user avatar

mplungjanmplungjan

166k28 gold badges173 silver badges235 bronze badges

Перейти к содержанию

Определить нечетное число

Просмотров 5.4к. Обновлено 26 сентября 2021

Из двух случайных чисел, одно из которых четное, а другое нечетное, определить и вывести на экран нечетное число.

В данной задаче можно выделить две подзадачи: 1) сгенерировать два случайных числа так, чтобы одно было четным, а другое нечетным, 2) определить, какое из них нечетное.

Вариант решения первой подзадачи:
Генерируем два случайных числа. Далее проверяем, являются ли оба числа четными или оба нечетные. Если это так, то увеличиваем первое число на 1. При этом в любом случае одно станет четным, а другое — нечетным. Проверку осуществляем в заголовке оператора if, строя сложное логическое выражение.

Вариант решения второй подзадачи:
Также используем оператор ветвления. Если первое число нечетное, то выводим его, иначе выводим второе.

Проверка чисел на четность выполняется путем определения остатка от деления числа на 2. Если остаток равен нулю, значит, число четное. Если нет, то нечетное.

Pascal

Язык Си

Python

КуМир

Basic-256

Картинка к уроку "Определение четности числа в Python"

На чтение 2 мин Просмотров 89.2к. Опубликовано

Для того чтобы определить четное число введено или нет в Python необходимо воспользоваться оператором «Остаток деления» и написать условие.

Содержание

  1. Оператор вычисления остатка от деления
  2. Определения четности числа с помощью оператора остатка от деления
  3. Написание функции для определения четности числа

Оператор вычисления остатка от деления

В языке программирования Python, также как и в других языках программирования, есть команда — оператор (%), который вычисляет остаток от деления на число. Приведем примеры:

4 % 2
>>>0
5 % 2
>>>1
20 % 10
>>>0
25 % 10
>>>5

При делении числа 4 на 2 — остаток 0. При делении числа 5 на 2 — остаток 1. При делении числа 20 на 10 — остаток 0. При делении числа 25 на 10 — остаток 5.

Определения четности числа с помощью оператора остатка от деления

Мы знаем, что при делении четного числа на 2 у нас в остатке остается 0. Поэтому для определения четного и нечетного числа можем воспользоваться оператором остатка от деления. Напишем для этого условие:

a = 5
if a % 2 == 0:
    print('Четное число')
else:
    print('Нечентное число')
>>> Нечетное число

В начале присваиваем переменной a число, четность которого хотим проверить. Далее пишем условие: если остаток деления переменной a на 2 равно 0, то вывести на экран «Четное число», в противном случае вывести «Нечетное число».

При запуске написанного кода, мы увидим «Нечетное» число.

Написание функции для определения четности числа

Можем написать функцию, которая на входе будет получать число, а на выходе выводить на экран «Четное число» или «Нечетное число» в зависимости от четности полученного числа.

def even_or_odd(a):
    if a % 2 == 0:
        print('Четное число')
    else:
        print('Нечентное число')

even_or_odd(10)
>>> Четное число
even_or_odd(11)
>>> Нечетное число

Разберем написанный код. В первой строке мы объявляем новую функцию. Назовем её even_or_odd. Функция на входе будет получать одно число. Далее она проверяет это число на остаток от деления на 2 и выводит на печать «Четное число» или «Нечетное число». Условие, которое написано в функции мы рассмотрели уже ранее.

Как видим, определить четность числа — это довольно простая задача, которая быстро решается с помощью оператора остатка от деления (%).

( 23 оценки, среднее 3.96 из 5 )

Добавить комментарий