М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ahgdy
ahgdy
15.05.2020 12:28 •  Информатика

Знайдіть суму найбільшого і найменшого елементів в дійсній таблиці С [1:18 ]

👇
Открыть все ответы
Ответ:
салемы
салемы
15.05.2020

#include <iostream>

using namespace std;

void main()

{

   setlocale(0,"russian");     //для отображения русских символов в консоли

   int a[8]={1,2,3,4,5,6,7,8}; //определение массива

   int k,sum=0;                //определение переменных

   cout<<"введите к:"<<endl;   //cout-вывод строки на консоль,endl-переход на новую строку(для удобства)

   cin>>k;                     //cin-для ввода  

   cout<<"весь массив:"<<endl;

   for(int i=0;i<8;i++)        //цикл для прохода по каждому элементу от 0 до 7 включительно(т.к. в данном случае у нас 8 элементов)

   {

       if(a[i]%k==0)           //проверяем на кратность текущий элемент массива

           sum=sum+a[i];       //если кратно, считаем сумму текущего элемента массива с предыдущим результатом  

       cout<<a[i]<<" ";        //выводим текущий элемент на консоль(для всех элементов)

   }

   cout<<endl<<"сумма элементов кратных 'k' равна "<<sum<<endl;//выводим результат

}

Объяснение:

4,4(34 оценок)
Ответ:
RIF12
RIF12
15.05.2020
Учитывая, что 50 - это очень немного (50-е простое число всего лишь 229), можно придумать всё что угодно (даже ужасающе неэффективное).
Можно просто перебирать все числа, начиная с двойки, и каждое делить на все меньшие его, начиная с двойки. Если хоть на одно разделится - не простое, иначе простое. Попутно подсчитывая число простых чисел, N-е найти не составит труда.

Псевдокод:
ввод N
i = 2
counter = 0
нц
   для j = 2..(i - 1)
      если i mod j = 0 тогда
         увеличить i на 1
         следующая итерация внешнего цикла
      увеличить counter на 1
      если counter = N тогда
         вывод i
         завершение работы программы
   увеличить i на 1
кц

Дальше можно изменять эту программу, оптимизировать. Например, известно, что меньший собственный делитель любого составного числа не превосходит корня из этого числа, следовательно, можно во внутреннем цикле делать перебор не до i - 1, а до [sqrt(i)].
Другое полезное наблюдение может заключаться в том, что все простые числа кроме 2 имеют вид 6m - 1 или 6m + 1 (остальные не подходят: очевидно, 6n делится на 6, 6n +-2 четные числа, а 6n + 3 делится на 3). Это наблюдение позволит примерно в три раза сократить число итераций внешнего цикла.
Наконец, можно сохранять все встретившиеся простые числа в массив, и затем проверять, делится ли текущее число на простые числа, меньшие себя: если не делится, то оно - тоже простое. Для хранения 50 маленьких натуральных чисел в памяти не нужно много места.
Можно воспользоваться каким-нибудь другим алгоритмом, например, решетом Эратосфена. Но в зависимости от того, на каком языке программирования будет потом реализовываться этот алгоритм, он может записываться нетривиально. Для выполнения "на бумажке" решето Эратосфена - один из самых удобных
В конце концов, можно использовать "читерский" метод - взять откуда-нибудь первые 50 простых чисел, записать их куда-нибудь, а потом просто за O(1) находить нужное число в памяти.
4,5(13 оценок)
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ