This’ll do the trick, even for ranges with negative numbers.
int even = (last - first + 2 - Math.abs(first % 2) - Math.abs(last % 2)) / 2;
Tested with the following code:
public static void main(String[] args) {
int[][] numbers = {{0, 4}, {0, 5}, {1, 4}, {1, 5}, {4, 4}, {5, 5},
{-1, 0}, {-5, 0}, {-4, 5}, {-5, 5}, {-4, -4}, {-5, -5}};
for (int[] pair : numbers) {
int first = pair[0];
int last = pair[1];
int even = (last - first + 2 - Math.abs(first % 2) - Math.abs(last % 2)) / 2;
System.out.println("[" + first + ", " + last + "] -> " + even);
}
}
Output:
[0, 4] -> 3
[0, 5] -> 3
[1, 4] -> 2
[1, 5] -> 2
[4, 4] -> 1
[5, 5] -> 0
[-1, 0] -> 1
[-5, 0] -> 3
[-4, 5] -> 5
[-5, 5] -> 5
[-4, -4] -> 1
[-5, -5] -> 0
lower = int(input())
upper = int(input())
odd = 0
even = 0
prima = 0
for i in range(lower, upper+1):
if i % 2 == 0:
even += 1
else:
odd += 1
if i > 1:
for j in range(2, i):
if (i % j) == 0:
break
else:
prima += 1
print(prima, even, odd)
Я написала вот такой код. Что касается нечётных и чётных чисел – всё работает. А вот с простыми числами выдаёт неправильный ответ. Подскажите в чём проблема. Спасибо.
задан 8 авг 2021 в 15:38
python_progpython_prog
651 золотой знак2 серебряных знака12 бронзовых знаков
Вам нужно изменить условие для проверки на простоту числа. Раньше вы считали число правильным сразу, если оно не делилось на 2.
По сути надо написать блок else
для цикла, то есть удалить по знаку табуляции на 2 строках. Так будет работать:
upper = int(input())
odd = 0
even = 0
prima = 0
for i in range(lower, upper+1):
if i % 2 == 0:
even += 1
else:
odd += 1
if i > 1:
for j in range(2, i):
if (i % j) == 0:
break
else:
prima += 1
print(prima, even, odd)
P.S. Для проверки числа на простоту достаточно перебирать только от 2 до квадратного корня этого числа
ответ дан 8 авг 2021 в 15:54
Как посчитать количество четных чисел?
Есть ли в Excel встроенная функция подсчёта количества четных чисел на заданном промежутке [a,b]?
-
Вопрос заданболее года назад
-
259 просмотров
Пригласить эксперта
Привет!
=СУММ(ОСТАТ(<Диапазон>;2)) – для нечетных
=СУММ(1 – ОСТАТ(<Диапазон>;2)) – для четных чисел
Чтобы подсчет сработал, нужно ввести формулу и вместо Enter нажать Ctrl + Shift + Enter, тогда формула сработает для массива чисел и будет заключена в фигурные скобки, примерно так:
-
Показать ещё
Загружается…
18 мая 2023, в 18:57
1500 руб./в час
18 мая 2023, в 18:46
9000 руб./за проект
18 мая 2023, в 18:37
3500 руб./за проект
Минуточку внимания
Hello, world!
Вот такую задачу перед нами, студентами, поставил товарищ преподаватель, НО попросил внести небольшие дизайнерские и соответственно головоломающие коррективы.
Вот непосредственно первоначальное условие задачи:
Напишите функцию, которая бы для диапазона, передаваемого ей в качестве параметра, и признака типа результата, находила бы количество четных чисел, содержащихся в диапазоне, если значение типа результата = 1, нечетных чисел, если значение типа результата = 2.
Вроде задача не сложная, даже если учитывать полное незнание VBA. Но нужно следующее: допустим у нас есть выделеная область ячеек, пусть будет 20*20. Ее мы должны рандомно заполнить числами и выделить мышкой область допустим 5*4 и решить главный вопрос задачи. Так вот, помогите пожалуйста, покажите как работать так с ячейками Экселя. Заранее благодарен!
Определить количество ячеек в диапазоне можно формулой =СЧЁТ(диапазон)
количество четных ячеек можно вычислить как разность между общим количеством ячеек диапазона и количеством ячеек с нечетными значениями.
Формула для подсчёта количества нечетных ячеек =СУММ(ОСТАТ(диапазон;2)) (подробное объяснение формулы )
В итоге получится формула массива (завершаем ввод CTRL+SHIFT+ENTER)
=СЧЁТ(диапазон)-СУММ(ОСТАТ(диапазон;2))
Пример:
Подсчитать количество четных чисел в диапазоне B2:B7
формула:
=СЧЁТ( B2:B7 ) – СУММ( ОСТАТ( B2:B7 ; 2 ))
результат