Dmitry Shakirov
Ученик
(206)
12 месяцев назад
1. Найдем количество чисел, не превышающих 1000, которые делятся на 3, 5, 7 и 11.
Чисел, делящихся на 3: 1000 / 3 = 333.
Чисел, делящихся на 5: 1000 / 5 = 200.
Чисел, делящихся на 7: 1000 / 7 = 142.
Чисел, делящихся на 11: 1000 / 11 = 90.
Чисел, делящихся на 3 и 5: 1000 / 15 = 66.
Чисел, делящихся на 3 и 7: 1000 / 21 = 47.
Чисел, делящихся на 3 и 11: 1000 / 33 = 30.
Чисел, делящихся на 5 и 7: 1000 / 35 = 28.
Чисел, делящихся на 5 и 11: 1000 / 55 = 18.
Чисел, делящихся на 7 и 11: 1000 / 77 = 12.
Чисел, делящихся на 3, 5 и 7: 1000 / 105 = 9.
Чисел, делящихся на 3, 5 и 11: 1000 / 165 = 6.
Чисел, делящихся на 3, 7 и 11: 1000 / 231 = 4.
Чисел, делящихся на 5, 7 и 11: 1000 / 385 = 2.
Чисел, делящихся на 3, 5, 7 и 11: 1000 / 1155 = 0.
Суммируем все найденные числа и получаем: 333 + 200 + 142 + 90 - 66 - 47 - 30 - 28 - 18 - 12 + 9 + 6 + 4 + 2 - 0 = 635.
2. Найдем количество всех натуральных чисел, не превышающих 1000.
Всего чисел до 1000: 1000.
3. Вычтем из общего количества чисел количество чисел, делящихся на 3, 5, 7, и 11. Получим количество чисел, которые не делятся ни на 3, ни на 5, ни на 7, ни на 11.
1000 - 635 = 365.
Таким образом, количество натуральных чисел, не превосходящих 1000, которые не делятся ни на 3, ни на 5, ни на 7, ни на 11, равно 365.
RAM OverflowМастер (1412)
12 месяцев назад
Всё хорошо, только 333 + 200 + 142 + 90 - 66 - 47 - 30 - 28 - 18 - 12 + 9 + 6 + 4 + 2 - 0 = 585. И 1000 - 585 = 415.
RAM Overflow
Мастер
(1412)
12 месяцев назад
#include
using namespace std;
int main() {
unsigned short count=0;
for (unsigned short i=1; i < 1001; ++i) {
if ((i % 3 != 0) && (i % 5 != 0) && (i % 7 != 0) && (i % 11 != 0)) ++count;
}
cout< return 0;
}
Ещё можно, как @Jurijus Zaksas, только вместо сравнения с нулём применить логическое отрицание:
#include
int main() {
unsigned short n=1000;
for (unsigned short i=1; i < 1001; ++i)
n -= !(i % 3) | !(i % 5) | !(i % 7) | !(i % 11);
std::cout << n;
return 0;
}
В любом случае, ответ: 415.