Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
C/man
3 / 3 / 0
Регистрация: 29.05.2012
Сообщений: 44
#1

Число в виде массива множителей - C++

27.11.2012, 17:17. Просмотров 573. Ответов 9
Метки нет (Все метки)

Подскажите, как целое число представить в виде массива его простых множителей?
http://www.cyberforum.ru/cpp-beginners/thread1385238.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2012, 17:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Число в виде массива множителей (C++):

Число как сумма квадратов его множителей
определить можно ли введенное число представить как сумму квадратов его...

Найти наименьшее натуральное число, непредставимое в виде суммы элементов массива Р
Дан массив P, содержащий N натуральных чисел. Найти наименьшее натуральное...

Отобразить минимальное положительное число, которое невозможно представить в виде суммы элементов массива
Отобразить то минимальное положительное число, которое невозможно представить в...

Динамический массив: целое число разложить на массив простых множителей
Доброго времени суток всем. Целое число необходимо разложить на массив простых...

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

9
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
27.11.2012, 17:51 #2
Такой вариант
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
#include <iostream>
using namespace std;
 
int main() 
{ 
    int number = 420;  
    int x = 2; 
    int array[10]; 
    int count = 0;
    
    if(number == 1) 
        std::cout << 1 << std::endl; 
    else 
        while(number!=1)  
            if( number % x == 0)  
            {
                number /= x; 
                array[count++] = x; 
            }
            else 
                ++x;   
 
    for ( int i = 0; i < count; ++i) 
        std::cout << array[i] << " "; 
    std::cout << std::endl;
        
}
1
C/man
3 / 3 / 0
Регистрация: 29.05.2012
Сообщений: 44
27.11.2012, 17:53  [ТС] #3
спасибо, сам уже написал, думал совсем никто не ответит)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
main()
{
    
    int m,i,val=22;
    int *mas=new int [3];
    for (i=0; i<(sizeof(mas)-1) && val !=1; i++)
    {
        for (m=2; val % m !=0; m++);
        val /= m; mas[i] = m;
        std::cout << mas[i] << " ";
    }
    system("pause");
}
0
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
27.11.2012, 17:56 #4
C/man у тебя неправильно считает.
0
C/man
3 / 3 / 0
Регистрация: 29.05.2012
Сообщений: 44
27.11.2012, 18:02  [ТС] #5
да)
проверил другое число, улыбнуло)

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
main()
{
    
    int m,i,val=444;
    int *mas=new int[val];
    for (i=0; i<val-1 && val !=1; i++)
    {
        for (m=2; val % m !=0; m++);
        val /= m; mas[i] = m;
        std::cout << mas[i] << " ";
    }
    system("pause");
}
0
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
27.11.2012, 18:09 #6
C/man ты не подумай, что я придираюсь, но второй код то же неверный.
0
C/man
3 / 3 / 0
Регистрация: 29.05.2012
Сообщений: 44
27.11.2012, 18:14  [ТС] #7
Цитата Сообщение от David Sylva Посмотреть сообщение
C/man ты не подумай, что я придираюсь, но второй код то же неверный.
как переделать этот код, чтобы работала верно? только начинаю изучать язык по сути
0
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
27.11.2012, 18:16 #8
Я тебе предложил свой вариант.
0
C/man
3 / 3 / 0
Регистрация: 29.05.2012
Сообщений: 44
27.11.2012, 18:18  [ТС] #9
тогда как в твоем варианте сделать массив динамическим, с большими числами 10 ячеек будет мало
0
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
27.11.2012, 18:23 #10
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
#include <iostream>
using namespace std;
 
int main() 
{ 
    int number = 420;  
    int x = 2; 
    int* array = new int[1000];
    int count = 0;
    
    if(number == 1) 
        std::cout << 1 << std::endl; 
    else 
        while(number!=1)  
            if( number % x == 0)  
            {
                number /= x; 
                array[count++] = x; 
            }
            else 
                ++x;   
 
    for ( int i = 0; i < count; ++i) 
        std::cout << array[i] << " "; 
    std::cout << std::endl;
        
}
1
27.11.2012, 18:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 18:23
Привет! Вот еще темы с решениями:

Вернуть все четные числа массива в виде нового массива
Функция должна вернуть все четные числа массива в виде нового массива. int...

Найти столбец массива с наибольшей суммой элементов и записатьегох в виде одномерного массива
1 Для произвольного двумерного массива найти столбец с наибольшей суммой...

Удалить из массива A[N] вс отрицательные элементы.Удаление отрицательных элементов массива оформить в виде функции
Что исправить? #include &lt;stdio.h&gt; #define N 10 int udalenie(int A,int k...

Простой список в виде массива.Как работать с элементами списка-массива через единую функцию
Добрый день!Подсобите,как реализовать Простой список,но не через шаблоны или...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru