Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 9

Нахождение числа с тремя делителями

04.02.2016, 21:50. Показов 6103. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите, пожалуйста с задачей. Пользователь вводит значения в две переменных m и n. Нужно вывести все числа в диапазоне от m до n у которых только три делителя (1, число само на себя и ещё один делитель). Код для нахождения простых чисел в диапазоне сотворил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "iostream"
using namespace std;
int main(){
int m;
    int n;
    cin >> m;
    cin >> n;
    bool b = true;
    for (; m < n; m++) {
        b = true;
        for (int a = 2; a < m; a++) {
        
            if (!(m%a)) {
                b=false;
                break;
            }
        }
            if (b == true)
                cout << m<<endl;
        }
        system("pause");
}
а вот как ввести проверку на ещё один, третий делитель, ума не приложу. И ещё прошу ответить на один вопрос: Стоит ли продолжать изучение программирования, если не могу самостоятельно решить такую задачу?
Заранее спасибо за ответы!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2016, 21:50
Ответы с готовыми решениями:

Нахождение степени числа тремя разными алгоритмами
здравствуйте. можете подсказать, мне нужно найти число a в степени n тремя разными алгоритмами. почитал литературу и всё-равно не могу...

Программа вычисления числа простых делителей натурального числа М, не являющихся в то же время делителями числа N
В идеале нужен нужно написать метод: Составьте программу вычисления числа простых делителей натурального числа М, не являющихся в то же...

Вычисление простых делителей натурального числа N, не являющихся делителями числа М
Помогите, пожалуйста, составить программу, язык программирования python Составить программу вычисления числа простых делителей...

25
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
05.02.2016, 13:22
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от provor Посмотреть сообщение
Квадраты простых чисел искать зачем-то придумали.
А трудоёмкость алгоритма какова? Твой https://www.cyberforum.ru/cgi-bin/latex.cgi?O(n^2) против https://www.cyberforum.ru/cgi-bin/latex.cgi?O(\sqrt{n}\log(\log \sqrt{n})) квадратов простых чисел на простейшем решете Эратосфена.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
 
int main(int argc, char* argv[]) {
  uint64_t m, n;
 
  if (argc>1) {
    m = std::stoull(std::string(argv[1]));
  } else {
    m = 1;
  }
 
  if (argc>2) {
    n = std::stoull(std::string(argv[2]));
  } else {
    n = 1000000UL;
  }
 
  std::cout << "m=" << m << std::endl;
  std::cout << "n=" << n << std::endl;
 
  uint64_t max_primes = sqrtl(n); // WARNING:
 
  std::cout << "max_primes=" << max_primes << std::endl;
  std::cout << "max_primes*max_primes=" << max_primes * max_primes << std::endl;
 
  std::vector<bool> ps(max_primes+1, true);
 
  ps[0] = ps[1] = false;
 
  for(uint64_t i=2; i<=max_primes; ++i) {
    if (ps[i]) {
      if ((m<=i*i) && (i*i <= n)) {
        std::cout << i*i << ", ";
      }
      for(uint64_t j=2*i; j<=max_primes; j+=i) {
        ps[j]=false;
      }
    }
  }
  std::cout << "\n";
 
  return 0;
}
Bash
1
2
3
4
5
6
7
8
9
10
$ time ./a.out 18446744073709551615 18446744073709551615
m=18446744073709551615
n=18446744073709551615
max_primes=4294967295
max_primes*max_primes=18446744065119617025
 
 
real    1m48.452s
user    1m48.012s
sys     0m0.310s
2
3 / 3 / 3
Регистрация: 04.02.2016
Сообщений: 22
05.02.2016, 13:26
AlexVRud, Вряд ли человек, спрашивающий это на форуме, дошел в своем изучении С++ до трудоемкости и, например, STL, которая есть в твоем коде. Палку-то не перегибай. Это обычная учебная программка
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
05.02.2016, 13:35
provor, ну так простые числа то он находить научился. И оставалось только проверить одно условие. Сравнить количество операций в циклах для разных решений он сможет. А превращать такое красивое задание в простой цикл проверки количества делимостей не интересно. Ну а STL я использовал по минимуму.
0
3 / 3 / 3
Регистрация: 04.02.2016
Сообщений: 22
05.02.2016, 13:45
AlexVRud, но в его способе трудоемкость была такая же как у меня
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
05.02.2016, 14:08
Цитата Сообщение от doremifasol Посмотреть сообщение
Стоит ли продолжать изучение программирования, если не могу самостоятельно решить такую задачу?
Стоит, всё придёт с практикой. Главное: если где-то сходу сложно, то разбирайся. Мне лично твоя задача очень понравилась. Её можно решить разными простыми способами, но время выполнения программы при этом может очень резко измениться. И если ты на это обратишь внимание сейчас, то в будущем будет намного проще. Потрать на эту задачу чуть больше времени, и попробуй понять, какое решение я предложил.

Добавлено через 2 минуты
Цитата Сообщение от provor Посмотреть сообщение
но в его способе трудоемкость была такая же как у меня
Нет. У него было болванка, которую можно было свести к O(n).

Добавлено через 13 минут
Его решение могла стать таким:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "iostream"
#include "math.h"
using namespace std;
int main(){
    int m=200;
    int n=1000;
//    cin >> m;
//    cin >> n;
    bool b = true;
    for (int p=2; p <= sqrt(n); p++) {
        b = true;
        for (int a = 2; a < p; a++) {
        
            if (!(p%a)) {
                b=false;
                break;
            }
        }
        if ((b == true)&&(m<=p*p)&(p*p<=n))
           cout << p*p<<endl;
        }
//        system("pause");
}
3
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.02.2016, 15:00
Цитата Сообщение от AlexVRud Посмотреть сообщение
А трудоёмкость алгоритма какова?
Однако, в твоей оценке корень под последним логарифмом со спокойной совестью можно убрать
А во всем остальном я полностью с тобой согласен. (Коды не смотрел, но верю)
А задача действительно интересна и показательна тем, как очень несложный математический анализ позволяет ее упростить и оптимизировать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2016, 15:00

Найти те числа отрезка, которые являются делителями последнего числа
Дан натуральный отрезок чисел . Найти те числа этого отрезка, которые являются делителями последнего числа

Подсчитать количество чисел, меньших данного числа М и являющихся делителями натурального числа Q
составьте программу подсчета числа натуральных чисел,меньших данного числа М и являющихся делителями натурального числа Q

Из массива A, состоящего не более чем из 25 чисел, записать в массив B числа, являющиеся делителями числа Х
Составить программу, которая из массива A, состоящего не более чем из 25 чисел, записывает в массив B числа, являющиеся делителями...

Дан текстовый файл, содержащий целые числа. Найти сумму элементов, являющихся делителями заданного числа
Дан текстовый файл, содержащий целые числа. Найти сумму элементов, являющихся делителями заданного числа n, в каждой строке. Сколько уже...

Определить являются ли числа делителями значения суммы первой и предпоследней цифры заданного целого четырехзначного числа
Даны целые числа m и n . Определить являются ли они делителями значения суммы первой и предпоследней цифры заданного целого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru