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

Получить все простые делители заданного натурального числа

23.12.2016, 10:40. Показов 20775. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Бьюсь с этой задачей уже несколько часов.
Выдает сбой в вычислениях, и я не могу понять почему.

За проверку брал число 1463. Раскладывается на простые делители 7, 11, 19. И программа выводит эти числа! А потом еще. Но почему? SOS!

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
#include <iostream>
#include <math.h>
using namespace std;
void main()
{
    setlocale (LC_ALL, "rus");
    int n, i, a;
    cout << "введите любое натуральное число: \n";
    cin >> n;
 
    for (i=2; i<=n; i++)
    { 
        if ( n % i != 0 )  // если остаток от деления равен 0, то i - делитель числа n
            {continue;}
        for  (a=2; a<=(i-1); a++)
            {   if ( i % a == 0 ) 
                { continue; }
                cout << i << endl; 
                break;
            }
            
        }
    
   system ("pause");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2016, 10:40
Ответы с готовыми решениями:

Найти все простые делители заданного натурального числа
Дано натуральное число n. Получить все простые делители этого числа.

Получить все простые делители натурального числа
2. Дано натуральное число n. Получить все простые делители этого числа.

Циклические алгоритмы: вывести на экран все простые делители заданного натурального числа
Вывести на экран все простые делители заданного натурального числа

25
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
23.12.2016, 14:08
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от gullsoup Посмотреть сообщение
Я придумал: проверяем является ли число делителем, если нет, проверяем новое, если да, проверяем его на простоту, выбрав как условие присутствие остатка при делении.
Вариант "в лоб" уже написан мною в 9 посте (первый код). Он не самый оптимальный, но рабочий.
1
0 / 0 / 0
Регистрация: 25.02.2020
Сообщений: 26
02.03.2020, 12:38
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
#include <iostream>
#include<cmath>
#include <vector>
#include <algorithm>
#include <cstdint>
 
using namespace std;
int  main()
 
{
    int n, a, b;
    cin >> n;
 
    if (n == 1)
        cout << n << " ";
 
    for (int i = 2; i <= sqrt(n); i++)
    {
 
        while (n%i == 0)
                {
                 n = n / i;
 
                cout << i << " ";
 
            }
 
                
    }
    if (n != 1)
        cout << n << " ";
    system("pause");
}
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
02.03.2020, 18:50
Внесу свои 5 копеек
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
02.03.2020, 21:00
Цитата Сообщение от gullsoup Посмотреть сообщение
Но почему? SOS!
У тебя проверка на простоту лажовая. Какое бы число ни записать в i - оно попадает в результат как простое. Допустим 10: на 2 делится - срабатывает continue, на 3 уже не делится - проскакивает в результат и срабатывает break (дальше не проверяется).

C
1
2
3
4
5
6
7
8
        i = 10; 
 
        for  (a=2; a<=(i-1); a++)
            {   if ( i % a == 0 ) 
                { continue; }
                cout << i << endl; 
                break;
            }
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 1
21.06.2021, 21:46
Товарищи, а почему же вы все считаете до корня из n? Возьмём к примеру n = 21. Корень из n = 4.58. Между тем простые делители числа 21 это 7 и 3, но до 7 с вашими алгоритмами мы никак не дойдем.

Добавлено через 4 минуты
Здесь тоже в частности все делители не получим. Почему до корня-то? 7*3 = 21. 7 > √(21)
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
22.06.2021, 09:17
А что, при проверке на простоту есть разница, делится на 3 или на 3 и 7? Если делится на три уже не простое, дальше можно не проверять. Если нет делителей до корня (простое), то их не будет и после корня.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2021, 09:17

Получить все простые делители заданного числа
Дано натуральное число n. Получить все простые делители этого числа. (нужно использовать функцию) #include &lt;iostream&gt; #include...

Найти все простые положительные делители данного натурального числа
Help!: Дано натуральное число N. Найти все его простые положительные делители. Ещё с решением пожалуйста (алгоритмы)

Вывести все делители заданного натурального числа
Вывести все делители заданного натурального числа

Получить все простые делители числа
Дано натуральное число n. Получить все простые делители этого числа. Помогите пожалуйста.

Получить все простые делители числа
Здравствуйте, помогите, пожалуйста. Дано целое число n. Получить все простые делители этого числа.


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru