Как найти все нечетные числа в промежутке

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

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

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

  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.5k4 золотых знака19 серебряных знаков35 бронзовых знаков

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

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!!!

0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

1

Найти количество нечетных чисел на промежутке

07.04.2015, 17:58. Показов 10271. Ответов 20


Студворк — интернет-сервис помощи студентам

найдите количество нечетных чисел на промежутке {A, B}.(С++)
Пожалуйста не используйте операторы сложные, я новичок. Если не сложно, алгоритм напишите)



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

07.04.2015, 17:58

20

Yanush

162 / 158 / 62

Регистрация: 28.09.2013

Сообщений: 293

07.04.2015, 18:33

2

Вроде бы так…

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
int main()
{
    size_t min = 0;
    size_t max = 0;
    size_t count = 0;
 
    std::cout << "Min: ";
    std::cin >> min;
    
    std::cout << "Max: ";
    std::cin >> max;
 
    for (size_t i = min; i < max; i++)
    {
        if (i % 2 != 0)
        {
            count++;
        }
    }
 
    std::cout << "n" << count << "n";
 
    return system("pause");
}



0



ReginaMur

0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 19:24

 [ТС]

3

спасибо!
я ее переделала так как делаем мы, посмотрите верно ли получается?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main()
{
 
int min=0, max=0, x ;
clrscr ();
cout<<"min:";
cin>>min;
 
cout<<"max:";
cin>>max;
 
for(x=min; x<max;x++)
{
if(x%2!=0)
{
x++;
}
}
cout<<"n"<<x<<"n";
 
getch ();
return 0;
 
}

Добавлено через 1 минуту
мне кажется он не выводит именно нечетные



0



162 / 158 / 62

Регистрация: 28.09.2013

Сообщений: 293

07.04.2015, 20:09

4

1. clrscr (); — лишнее
2. if(x%2!=0){x++;} — используйте для подсчета нечетных чисел другую переменную (х уже используется как счетчик цикла)
3. getch (); -> _getch();
Вроде бы все. Зря вы так код оформляете, сами потом будете путаться (при увеличении размера кода) ;=)



0



ValeryS

Модератор

Эксперт по электронике

8806 / 6589 / 894

Регистрация: 14.02.2011

Сообщений: 23,171

07.04.2015, 20:19

5

Цитата
Сообщение от ReginaMur
Посмотреть сообщение

C++
1
2
3
4
5
6
7
for(x=min; x<max;x++)
{
if(x%2!=0)
{
x++;
}
}

и старательно портим счетчик цикла
все это можно убыстрить

C++
1
2
3
4
5
6
7
x=min;
//добираемся до первого нечетного значения
while((x%2)==0)
  x++;
int cnt=0;
 for(;x<=max;x+=2)
   cnt++;

а если вспомнить математику 5 класс то можно вообще без циклов

C++
1
2
3
int cnt=(max-min)/2;
if(min%2!=0)
 cnt++;



0



0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 20:58

 [ТС]

6

Всем спасибо!!!!
на счет

Цитата
Сообщение от Yanush
Посмотреть сообщение

1. clrscr ();

нас так учат

Цитата
Сообщение от Yanush
Посмотреть сообщение

getch (); -> _getch();

тоже учат так, а ваш вариант я не знаю



0



Байт

Диссидент

Эксперт C

27488 / 17175 / 3784

Регистрация: 24.12.2010

Сообщений: 38,685

07.04.2015, 21:01

7

Цитата
Сообщение от ValeryS
Посмотреть сообщение

if(min%2!=0)
*cnt++;

C++
1
cnt += (min%2);



0



0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 21:04

 [ТС]

8

Цитата
Сообщение от ValeryS
Посмотреть сообщение

cnt++

как эта операция по другому записывается? она мне не известна



0



Байт

Диссидент

Эксперт C

27488 / 17175 / 3784

Регистрация: 24.12.2010

Сообщений: 38,685

07.04.2015, 21:06

9

Цитата
Сообщение от ReginaMur
Посмотреть сообщение

по другому

C++
1
cnt = cnt + 1;

Но имей в виду. Операция ++ — самая главная операция в С++



0



0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 21:08

 [ТС]

10

я знаю на счет ++, что означает это

Цитата
Сообщение от Байт
Посмотреть сообщение

cnt



0



ValeryS

Модератор

Эксперт по электронике

8806 / 6589 / 894

Регистрация: 14.02.2011

Сообщений: 23,171

07.04.2015, 21:08

11

Байт, и это ты хочешь впихнуть начинающим?

Цитата
Сообщение от Байт
Посмотреть сообщение

cnt += (min%2);

я боюсь, что не поймут политеса
кстати проверь формулу, мою
а то я её накидал а сейчас сомневаюсь
например 2 3 вот и весь диапазон
(3-2)/2 =0
минимальное четное значит всего нечетных 0
но оно же есть это 3
вот чую что что то не так, а нащупать не могу
может

C++
1
int cnt=(max-min+1)/2;

??????



0



0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 21:10

 [ТС]

12

дубль 2

Цитата
Сообщение от ReginaMur
Посмотреть сообщение

я знаю на счет ++, что означает это
Сообщение от Байт
cnt



0



Модератор

Эксперт по электронике

8806 / 6589 / 894

Регистрация: 14.02.2011

Сообщений: 23,171

07.04.2015, 21:15

13

Цитата
Сообщение от ReginaMur
Посмотреть сообщение

cnt

ни о чем не говорит

Цитата
Сообщение от ValeryS
Посмотреть сообщение

int cnt

cnt это переменная типа int, сокращение от слова count(сосчитанное число,подсчет, иногда применяется в контексте количество)
когда компьютеры были большие а экраны у них маленькие то так сокращали имена переменных, выбрасывали гласные
Вот я и пользуюсь по старой памяти



0



0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 21:17

 [ТС]

14

Цитата
Сообщение от ValeryS
Посмотреть сообщение

cnt это переменная типа int, сокращение от слова count(сосчитанное число,подсчет, иногда применяется в контексте количество)
когда компьютеры были большие а экраны у них маленькие то так сокращали имена переменных, выбрасывали гласные
Вот я и пользуюсь по старой памяти

так, а как мне можно написать это, на моем примере? потому что такую запись я не буду записывать



0



Модератор

Эксперт по электронике

8806 / 6589 / 894

Регистрация: 14.02.2011

Сообщений: 23,171

07.04.2015, 21:19

15

Цитата
Сообщение от ReginaMur
Посмотреть сообщение

так, а как мне можно написать это, на моем примере?

что написать? как обозвать переменную? обзови как хочешь

Цитата
Сообщение от ReginaMur
Посмотреть сообщение

потому что такую запись я не буду записывать

хозяин барин
ты для себя учишься или для препода?



0



Байт

Диссидент

Эксперт C

27488 / 17175 / 3784

Регистрация: 24.12.2010

Сообщений: 38,685

07.04.2015, 21:22

16

Цитата
Сообщение от ValeryS
Посмотреть сообщение

вот чую что что то не так

Это зависит от границ. Если исходить из реализаций, то рассматривается полуинтервал [min, max) min <= x < max. В [2,3) нечетных чисел нет. Если в стартовом топике фигурные скобки рассматривать, как принято, т.е. как перечисление, то

C++
1
 cnt = min%2 + max%2;

Но тогда при чем здесь промежуток?



0



0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 21:25

 [ТС]

17

Мне сдавать преподу



0



Модератор

Эксперт по электронике

8806 / 6589 / 894

Регистрация: 14.02.2011

Сообщений: 23,171

07.04.2015, 21:28

18

Цитата
Сообщение от Байт
Посмотреть сообщение

min <= x < max.

я так понял что min <= x <= max. верхняя граница тоже входит

Добавлено через 2 минуты

Цитата
Сообщение от ReginaMur
Посмотреть сообщение

Мне сдавать преподу

т.е учится это не обязательно главное сдать
а потом с какими знаниями работать будешь?
Нормальный препод даже будет рад если решение будет не по клише, а не нормального можно и послать и сдавать комиссии
Я так пару раз сдавал и оба раза хорошие оценки
главное знать о чем говоришь



0



0 / 0 / 0

Регистрация: 02.04.2015

Сообщений: 28

07.04.2015, 21:30

 [ТС]

19

я уже запуталась, я так понимаю решение не правильное?



0



Байт

Диссидент

Эксперт C

27488 / 17175 / 3784

Регистрация: 24.12.2010

Сообщений: 38,685

07.04.2015, 21:31

20

Цитата
Сообщение от ValeryS
Посмотреть сообщение

я так понял что min <= x <= max. верхняя граница тоже входит

Тогда

C++
1
cnt = (max - min+1)/2 + min%2;  // Эквивалентно тому, что max на 1 больше



1



Подождите!

Не закрывайте страницу. Нейросеть пишет ответ. Он появится тут.

Этот ответ написан нейросетью.

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

Ответ нейросети:

Для решения данной задачи необходимо использовать цикл while, который будет перебирать все числа в интервале от m до n, и с помощью условного оператора if проверять, является ли текущее число нечетным. Если число нечетное, то его квадрат складывается с общей суммой квадратов нечетных чисел.

Для начала задаем начальное значение переменной sum, которая будет хранить сумму квадратов нечетных чисел:

int sum = 0;

Далее, задаем начальное значение переменной i, которая будет отвечать за текущее число:

int i = m;

После этого, создаем цикл while, который будет работать, пока текущее число i не достигнет значения n:

while (i <= n)
{
if (i % 2 != 0) // проверка на нечетность числа
{
sum += i*i; // складываем квадрат нечетного числа с общей суммой
}
i++; // увеличиваем текущее число на 1
}

Как только цикл закончит свою работу, в переменной sum будет храниться сумма квадратов всех нечетных чисел в заданном интервале. Чтобы вывести результат на экран, необходимо использовать команду Console.WriteLine:

Console.WriteLine(«Сумма квадратов нечетных чисел в интервале от » + m + » до » + n + » равна » + sum + «.»);

В итоге, полный код для решения задачи будет выглядеть следующим образом:

int m = 1; // начало интервала
int n = 10; // конец интервала
int sum = 0; // сумма квадратов нечетных чисел
int i = m; // текущее число

while (i <= n) // цикл перебора всех чисел в интервале
{
if (i % 2 != 0) // проверка на нечетность числа
{
sum += i*i; // складываем квадрат нечетного числа с общей суммой
}
i++; // увеличиваем текущее число на 1
}

Console.WriteLine(«Сумма квадратов нечетных чисел в интервале от » + m + » до » + n + » равна » + sum + «.»);

⚠️Зарепортить пост!

Понравилась статья? Поделить с друзьями:
  • Как помочь ребенку исправить почерк в 4 классе
  • Как найти длительность дня
  • Как найти subnet mask
  • На геймпаде перепутаны кнопки как исправить windows 10
  • Как найти созданное резюме на авито