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

Составить с блок схемы программу на python


Составить с блок схемы программу на python

👇
Открыть все ответы
Ответ:
adonda994
adonda994
08.09.2021

/*Код соответствует тексту задания из файла. Последовательность вводится в строку через знаки пробела, нажатие клавиши Enter заканчивает ввод последовательности. Программа НЕ проверяет корректность введенных данных*/

#include <iostream>

bool is_prime(const int n);

int main(int argc, char* argv[])

{

   int numb, n_of_pr_numb = 0;

   long int sum = 0;

   do

    {

       std::cin >> numb;

       if(is_prime(numb))

       {

           sum += numb;

           n_of_pr_numb++;

       }

   } while (std::cin.peek() != '\n');

   std::cout << "The arithmetic mean: " << (n_of_pr_numb == 0 ? 0 : sum * 1. / n_of_pr_numb);

}

bool is_prime(const int n)

{

   if (n <= 1)

   {

       return false;

   }

   for (int i = 2; i <= pow(n, 1/2); i++)

   {

       if (n % i == 0)

       {

           return false;  

       }

   }

   return true;

}

Основные ошибки/недочеты Вашей реализации:

В функции pr строка for ( a = 2 ; a<=n ; a++) неверна, т.к. на последнем шаге число всегда будут сравнивать с самим собой, правильно for ( a = 2 ; a<n ; a++). Ну и нет смысла проверять до a=n-1, достаточно проверить до √n(об этом есть целая теорема).По условию никакого вывода слов "Простое/Не простое" не требуетсяСтрока cout << "n = "; лишняя, т.к. даже если на ввод будет подано несколько чисел, на экран "n = " будет выведено лишь в начале. Лучше уточнить для пользователя формат ввода.Смысл функции arif неясен, она выводит на консоль какие-то непонятные пользователю данные, затем возвращает s/i[ВНИМАНИЕ! Так как s и i целочисленные, то s/i не является средним арифметическим, это будет лишь целая часть от него. Правильнее s * 1./i или static_cast<double>(s)/i], а затем выводит это значение. Зачем разрывать cout на две функции - неясноВвод данных не должен находиться в функции проверки числа на простоту(да и смысл разбиения программы на функции пропадает)
4,4(25 оценок)
Ответ:
Frosterion
Frosterion
08.09.2021
Составим уравнение
87_{10}=ab2_n, \ a \in [1..n-1], \, b \in[0..n-1], \, a,b \in \mathbb N
Воспользуемся расширенной записью числа
87=an²+bn+2 → an²+bn-85=0
Известно, что если многочлен с целочисленными коэффициентами имеет хотя бы один вещественный корень, то он находится среди делителей свободного члена. Нас интересуют только натуральные делители, большие 2, поскольку n - основание системы счисления и в этой системе имеется цифра 2.
85 = 5 × 17. Число 17 не подходит, потому что 17>10 и двухзначное десятичное число в системе счисления с основанием, большим 10, не может иметь в записи больше двух знаков. Следовательно, n=5.

Для проверки переводим 87 в систему счисления по основанию 5.
87 / 5 = 17, остаток 2
17 / 5 = 3, остаток 2
3 / 5 = 0, остаток 3.
Выписываем остатки в обратном порядке: 322
87₁₀ = 322₅ - в числе три разряда и оно оканчивается двойкой.

ответ: N=5
4,4(86 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ