Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2021, 15:34   #1
177semen177
 
Регистрация: 25.11.2021
Сообщений: 4
По умолчанию Исправить ошибки в программе

Условие: Дано натуральное число n. Получить все простые делители этого числа. Простым называется натуральное число больше единицы, имеющее только два делителя: единицу и само это число.
Код:
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    setlocale(LC_ALL, "");
    int i, n;
    i = 1;
    cout << "Введите число n = ";
    cin >> n;
    do
    {
        if (n % (i = 0))
        {
            cout << "Введите число i = ";
            cin >> i;
            i = i + 1;
        }
    } while (i < n);
    return 0;
}
177semen177 вне форума Ответить с цитированием
Старый 04.12.2021, 16:02   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

А зачем вы запрашиваете число i? Сделайте просто 2 вложенных цикла и печатайте делители.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 04.12.2021, 16:08   #3
177semen177
 
Регистрация: 25.11.2021
Сообщений: 4
По умолчанию

И как это сделать? Я не понимаю...
177semen177 вне форума Ответить с цитированием
Старый 04.12.2021, 16:18   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Вы можете напечатать числа от 1 до N?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 04.12.2021, 17:09   #5
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

из 2-х множителей находит да и 737137 и 7351123 разложило

Код:
'prost.bas
a = 19: b = 23: N = a * b: PRINT a, b, N
FOR i = 2 TO SQR(N): p = 1
    FOR j = 2 TO SQR(i)
        IF (i MOD j) = 0 THEN p = 0: GOTO 5
    NEXT
    5 IF p = 1 THEN IF (N MOD i) = 0 THEN PRINT i, N / i
NEXT
на другие языки из qb64 qbasic переводим сами
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 04.12.2021 в 17:16.
сфинкс вне форума Ответить с цитированием
Старый 04.12.2021, 19:22   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
А зачем вы запрашиваете число i?
Святая простота... Ну так было в сдутом примере, репу включать было не обязательно.
Код:
    int i, j, n, sq;
    cout << "Введите число n = ";
    cin >> n;
    sq = sqrt(n) ;
    for (i=2;i<=sq;i++)
    {
        j=n/i ;
        if (i*j == n)
          { if (i==j) cout << i ; else cout i, j ; }
    }
И зачем 2 вложенных цикла ?

Последний раз редактировалось digitalis; 04.12.2021 в 19:34.
digitalis вне форума Ответить с цитированием
Старый 04.12.2021, 22:46   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Святая простота
Надеюсь на лучшее
Цитата:
Сообщение от digitalis Посмотреть сообщение
И зачем 2 вложенных цикла ?
Один для поиска делителей N, а второй для проверки самого делителя на простоту.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 04.12.2021, 23:29   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Один для поиска делителей N, а второй для проверки самого делителя на простоту.
Ну я как всегда - читаю до половины Старая привычка ещё с заводских времён: быстрее, конец месяца, ПЗ приёмку остановил!!
digitalis вне форума Ответить с цитированием
Старый 05.12.2021, 18:04   #9
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

а вдруг исчезнувший автор темы хочет взломать крипты ?

ведь там кажись тоже чё то про несколько простых чисел
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 05.12.2021, 19:24   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от сфинкс Посмотреть сообщение
а вдруг исчезнувший автор темы хочет взломать крипты ?
Это уж его проблемы - ему зону топтать в случае чего.
Даже Щчылиц не использовал столь просто взламываемые крипты.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить ошибки в программе bublik3 Помощь студентам 4 28.12.2020 09:23
Исправить ошибки в программе AB96 Общие вопросы C/C++ 1 01.12.2015 21:35
Исправить ошибки в программе Котей Общие вопросы C/C++ 2 19.05.2013 20:11
Отладить и исправить ошибки в программе на С++ Bespalini Фриланс 2 18.08.2012 20:01