С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 9
1

Найти простые делители целого числа n введенного с клавиатуры и записать в массив

03.06.2019, 17:45. Показов 3971. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код который определяет делители числа введенного с клавиатуры, что нужно исправить чтобы определяло именно простые делители, а не все ?

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include<iostream>
using namespace std;
void PoiskDel(int, int);
void Sort(int*, int);
void PrintMas(int*, int);
 
 
 
int main() {
    setlocale(LC_ALL, "ru");
    int k = 0, x = 0;
    cout << "Введите число: " << endl;
    cin >> x;
    PoiskDel(x, k);
 
    return 0;
}
 
 
void PrintMas(int *mas, int k)
{
    for (int i = 0; i < k; i++)
    {
        cout << mas[i] << " ";
    }
}
 
 
void PoiskDel(int x, int k) {
    for (int i = 1; i < x+1; i++)
    {
        if (x % i == 0)  // если делится без остатка
        {
            k++;
        }
    }
    int *mas = new int[k];
    for (int j = 0,i = 1; j < k+1, i < x+1; i++)
    {
        if (x % i == 0 ) 
        {
            mas[j] = i;
            j++;
        }
    }
    Sort(mas, k);
    cout << "\n";
    PrintMas(mas, k);
}
 
void Sort(int* mas,int k)
{
        for (int i = 1; i < k; ++i)
        {
            for (int r = 0; r < k - i; r++)
            {
                if (mas[r] < mas[r + 1])
                {
                    // Обмен местами
                    int temp = mas[r];
                    mas[r] = mas[r + 1];
                    mas[r + 1] = temp;
                }
            }
        }
}
0
Programming
Эксперт
9485 / 562 / 19
Регистрация: 12.04.2006
Сообщений: 11,671
Блог
03.06.2019, 17:45
Ответы с готовыми решениями:

Найти простые делители целого числа n введенного с клавиатуры и записать в массив
Нужна помощь. Найти простые делители целого числа n введенного с клавиатуры и записать в массив. Я...

Найти делители натурального числа, введенного с клавиатуры
3) Найти делители натурального числа, введенного с клавиатуры. При решении задачи составить схему...

Определить функцию, формирующую массив, содержащий простые делители целого числа, записанные в порядке возрастания
Определить функцию, формирующую массив, содержащий простые делители целого числа( число вводится...

Определите, какая из цифр введенного с клавиатуры целого числа расположена левее, максимальная или минимальная
Пожалуйста помогите создать программу &quot;Определите, какая из цифр введенного с клавиатуры целого...

10
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 9
03.06.2019, 20:02  [ТС] 2
Нужна помощь. Найти простые делители целого числа n введенного с клавиатуры и записать в массив.
Я нахожу делители только все, а нужно именно простые, какое нужно задать правильное условие?
Помогите кто знает, заранее спасибо

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void PoiskDel(int x, int k) {
    for (int i = 1; i < x+1; i++)
    {
        if (x % i == 0)  // если делится без остатка
        {
            k++;
        }
    }
    int *mas = new int[k];
    for (int j = 0,i = 1; j < k+1, i < x+1; i++)
    {
        if (x % i == 0 ) 
        {
            mas[j] = i;
            j++;
        }
    }
    Sort(mas, k);
    cout << "\n";
    PrintMas(mas, k);
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.06.2019, 20:25 3
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
#include <iostream>
using namespace std;
 
bool is_prime(int n)
{
    if (n==2) return true;  
    if (n < 2 || n%2==0) return false;  
    for (int i=3; i*i<=n; i+=2)
    if (n%i==0) return false;
    return true;  
}
 
int main()
{
    int n, k=0;     
    cout << "n="; cin >> n;    
    if (n<0) n=-n;
    
    for (int i=1; i<=n/2; i++)
    if (n%i==0 && is_prime(i)) k++;
    if (is_prime(n)) k++;
    
    int*a = new int[k];
    
    k=0;
    for (int i=1; i<=n/2; i++)
    if (n%i==0 && is_prime(i)) a[k++]=i;
    if (is_prime(n)) a[k++]=n;
    
    for (int i = 0; i < k; i++)      
      cout << a[i] << " ";      
    cout << "\n";
    
    delete[]a;       
system("pause");
return 0;
}
если использовать вектор, можно немного упростить. сообщите если нужно.
0
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 9
03.06.2019, 21:01  [ТС] 4
А можно как то этот код вписать в мой существующий ?
Или все по новому нужно писать ?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.06.2019, 21:10 5
Цитата Сообщение от MaxZubko Посмотреть сообщение
А можно как то этот код вписать в мой существующий ?
можно но зачем ? если условие не такое, как Вы пишите:
Цитата Сообщение от MaxZubko Посмотреть сообщение
Найти простые делители целого числа n введенного с клавиатуры и записать в массив
сформулируйте условие задачи полностью. и ответьте насчёт вектора. вектор можно использовать ?
0
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 9
03.06.2019, 21:49  [ТС] 6
Создать одномерный массив, который состоит только из простых делителей целого числа n веденного с клавиатуры. Вывести созданный массив на экран. Отсортировать полученный массив в порядке убывания и вывести результат на экран.

Добавлено через 36 минут
По заданию не говориться о векторе, так что давайте без вектора.
У вас получиться реализовать такое ?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.06.2019, 23:17 7
Цитата Сообщение от MaxZubko Посмотреть сообщение
У вас получиться реализовать такое ?
так всё уже реализовано выше, только сортировку добавляю:
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
47
48
49
50
51
52
53
54
#include <iostream>
using namespace std;
 
bool is_prime(int n)
{
    if (n==2) return true;  
    if (n < 2 || n%2==0) return false;  
    for (int i=3; i*i<=n; i+=2)
    if (n%i==0) return false;
    return true;  
}
 
void BubbleSort (int *a, int n)
{
    for (int i=0; i<n-1; i++)    
       for (int j=0; j<n-i-1; j++)        
         if (a[j] < a[j+1]) 
         swap(a[j], a[j+1]);
}
 
void Print (int *a, int n)
{
    for (int i = 0; i < n; i++)      
      cout << a[i] << " ";      
    cout << "\n";
}    
    
int main()
{
    int n, k=0;     
    cout << "n="; cin >> n;    
    if (n<0) n=-n;
    
    for (int i=1; i<=n/2; i++)
    if (n%i==0 && is_prime(i)) k++;
    if (is_prime(n)) k++;
    
    int*a = new int[k];
    
    k=0;
    for (int i=1; i<=n/2; i++)
    if (n%i==0 && is_prime(i)) a[k++]=i;
    if (is_prime(n)) a[k++]=n;
    
    cout << "Array:\n";
    Print(a,k);
    BubbleSort(a,k);
    cout << "Sorted array:\n";
    Print(a,k);    
    
    delete[]a;       
system("pause");
return 0;
}
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
04.06.2019, 01:40 8
Yetty, зачем тут проверка на простоту? банального деления хватило бы
C++
1
2
3
4
5
6
7
for(int divider=2; divider*divider<=N; ++divider)
  if (N%divider==0)
  {
     cout<<divider<<endl;
     while (N%divider==0) 
       N/=divider;
  }
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
04.06.2019, 02:04 9
Kuzia domovenok, искать делители числа ? проверил - работает, с алгоритмом пока не разобрался. только чем 2 цикла лучше чем один ?
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
04.06.2019, 15:39 10
Yetty,ну, у тебя тоже 2 цикла, одни ищет делитель, а второй запрятан в функцию is_prime
при этом у тебя "делители простоты числа" каждый раз перебираются с начала, с двойки
а надо продолжать поиск со следующего по порядку делителя.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.06.2019, 13:50 11
Kuzia domovenok, предложенный Вами блок для числа N=10 найдёт делитель 2, хотя у числа 10 два простых делителя 2 и 5. можете прокомментировать ?
0
06.06.2019, 13:50
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
06.06.2019, 13:50
Помогаю со студенческими работами здесь

Найти все делители целого положительного числа
Найти все делители целого положительного числа

Найти все делители целого положительного числа
Найти все делители целого положительного числа

Найти все делители числа n, взаимно простые с m
Даны целые числа m и n. Найти все делители числа n, взаимно простые с m.

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru