Как найти все нечетные числа в диапазоне

Here is another technique i used to follow. Basically to find the number of odd/even integers in a range, just pick up the first odd/even and last odd/even in that range. Say for example i need to find out the number of odd integers in the range 100 to 150 (inclusive).

  1. Pick the first odd integer -> 101
  2. Pick the last odd integer -> 149
  3. Find the difference -> 149-101= 48
  4. Divide by the interval(in this case 2, since the positive difference between any two odd integers is 2). So -> 48/2 = 24
  5. Add 1 for an inclusive range, -> 24+1=25, This is the step we usually do for all inclusive problems.

This will work for 1-100 like, range(1-99)-> 99-1=98 -> 98/2=49 -> 49+1 = 50.

NOTE: For exclusive set, you should consider if the numbers you pick lie inside the interval in order to consider it as an inclusive set. If its confusing, lets say the above range 100 to 150 is not inclusive, we still pick up numbers 101 and 149 and they lie within the range, so the inclusive property continues here also. But what if i need to find the number of even integers in this range?
Same procedure can be used,
1. Pick first and last even integer, 100 and 150
2. 150-100 = 50
3. 50/2 = 25
4. If it is inclusive set, add 1 -> 25+1=26
5. If it is an exclusive set, subtract 1 -> 25-1=24

Don’t be confused, its just a basic understanding of ranges, read it once more. This is actually very easy and reliable method.

This can be used not only for odd/even integers in a range but also for one of the example given above.
How many integers of the form 5k+2 are there from 1 to 200?

Starting from k=0, 5(0)+2 = 2 and the last term will be 197, since we need a (multiple of 5)+2 -> 5(39)+2=195+2
The range would look like 2, 7, 12, … 197
Again our technique,
197-2 = 195
Divide by 5 in this case, since the positive difference is 5
So 195/5=39
Add 1, 39+1=40, Got the answer!!!

Описание задачи

Программа принимает на вход два числа, которые определяют границы диапазона, и выводит все нечетные числа в этом диапазоне.

Решение задачи

  1. Принимаем на вход два числа, которые определяют заданный диапазон, и записываем их в разные переменные.
  2. Используем цикл for для прохождения по этому диапазону.
  3. Затем используем оператор if для проверки на четность и после этого выводим нечетные числа на экран.
  4. Конец.

Исходный код

Ниже дан исходный код для вывода всех нечетных чисел из заданного диапазона. Результаты работы программы также даны ниже.

lower = int(input("Введите нижнюю границу диапазона:"))
upper = int(input("Введите верхнюю границу диапазона:"))
for i in range(lower, upper+1):
    if(i % 2 != 0):
        print(i)

Объяснение работы программы

  1. Пользователь вводит два числа, которые записываются в отдельные переменные и являются нижней и верхней границей диапазона.
  2. При помощи цикла for мы перебираем все числа в данном диапазоне.
  3. Далее используем оператор if. Выражение внутри этого оператора проверяет, равен ли остаток 0.
  4. В случае, если остаток не равен 0, мы выводим это число на экран.

Результаты работы программы

Пример 1:
Введите нижнюю границу диапазона:1
Введите верхнюю границу диапазона:16
1
3
5
7
9
11
13
15
 
Пример 2:
Введите нижнюю границу диапазона:150
Введите верхнюю границу диапазона:180
151
153
155
157
159
161
163
165
167
169
171
173
175
177
179

Даны два целых числа, A и B.
Необходимо вывести все нечетные числа на отрезке от А до B.
UPD: Использовать инструкцию if запрещено!

Входные данные:
На вход программе подаются два целых числа: A и B (AB), по одному в строке

Выходные данные:
Вывести через пробел все нечетные числа на заданном отрезке

Входные данные:

1
10

Выходные данные:

1 3 5 7 9

Мой код не всегда работает: например, если A – отрицательное и чётное.

Код:

a = int(input())
b = int(input())

for i in range(a - (a + 1) % 2, b - b % 2, 2):
    print(i, end=' ')

Jack_oS's user avatar

Jack_oS

12.5k7 золотых знаков18 серебряных знаков48 бронзовых знаков

задан 10 ноя 2019 в 15:40

Mikey_mouse's user avatar

Чтобы из четного числа получить нечетное больше на единицу применим побитовое ИЛИ с единицей: a|1. Далее обычный цикл от а до б через 2:

a = int(input())
b = int(input())
for i in range(a|1, b+1, 2): # +1, чтобы попало b, если нечётное 
    print(i, end=' ')

ответ дан 10 ноя 2019 в 17:18

Эникейщик's user avatar

ЭникейщикЭникейщик

25.1k7 золотых знаков30 серебряных знаков46 бронзовых знаков

7

a = -11
b = 10

print(*[x for x in range(a, b) if x&1]

-11, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9

ответ дан 10 ноя 2019 в 15:54

strawdog's user avatar

strawdogstrawdog

23.4k4 золотых знака19 серебряных знаков33 бронзовых знака

2

a = int(input())
b = int(input())

# Первое нечётное число не меньше a
a_odd = a + (not (a % 2))
# Крайнее нечётное число не больше b
b_odd = b - (not (a % 2))

result = list(str(i) for i in range(a_odd, b_odd+1, 2))

print(' '.join(result))

ответ дан 10 ноя 2019 в 16:50

Xander's user avatar

XanderXander

20k3 золотых знака25 серебряных знаков52 бронзовых знака

Решение основано на том, что остаток от деления чётного числа на 2 всегда равен 0, а остаток от деления нечётного числа на 2 всегда равен 1. Решал для себя, но на радостях решил поделиться. Пользуйтесь на здоровье)

A = int(input())
B = int(input())
for i in range(A+abs(A%2-1),B+1,2):
  print(i,end=" ")

ответ дан 28 окт 2021 в 19:11

Дмитрий Язынин's user avatar

2

Чтобы установить, является ли число нечетным вычисляем остаток от деления на 2 (равен 1), это можно сделать функцией:

=ОСТАТ(ячейка;2)

далее необходимо просуммировать эти результаты для каждой ячейки диапазона.

чтобы получить массив значений необходимо вместо ячейки установить диапазон и ввести всю формулу , как формулу массива (завершая ввод комбинацией клавиш CTRL+SHIFT+ENTER­).

Суммирование выполняем функцией СУММ

Получаем формулу для расчета количества нечетных чисел диапазона:

=СУММ(ОСТАТ(диапаз­он;2)), которую надо вводить как формулу массива для диапазона

После ввода CTRL+SHIFT+ENTER Эксель сам возьмёт формулу в фигурные скобки.

Пример:

Подсчитать количество нечетных чисел в диапазоне B2:B7

формула:

=СУММ(ОСТАТ(B2:B7 ; 2))

результат

Как составить формулу для определения количества четных чисел диапазона?

Вывод нечетных чисел из диапазона



Знаток

(363),
закрыт



5 лет назад

extrn

Мыслитель

(6988)


5 лет назад

в правильном
for x in range(A + A % 2 – 1, B – 1, -2):
или
for x in range((A + 1) // 2 * 2 – 1, B – 1, -2):
или
for x in range(A – 1 | 1, B – 1, -2):
как больше нравится

Foo

Мыслитель

(7457)


5 лет назад

print([x for x in range(a + 1 – a % 2, b + 1, 2)][::-1])

SteelhawkЗнаток (363)

5 лет назад

Спасибо, здорово, только вот насколько я понимаю то, что в фигурных скобках, это работа со строкой, а она еще по идее не пройдена. Я надеялся, что есть варианты решения с простейшими операциями остатка от деления и целочисленного деления. Эх

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