Форум программистов, компьютерный форум CyberForum.ru

Разложить число на простые множители - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Anonimus1234
0 / 0 / 0
Регистрация: 29.08.2008
Сообщений: 10
08.07.2011, 21:54     Разложить число на простые множители #1
Я для этого написал программу :
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
#include <stdio.h>
 
#define MAXN 1000
 
int main(){
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    int A,primes[MAXN][2],pointer = 0,i = 2; //primes[i][0] содержит простое число , а primes[i][1] его степ.
    scanf("%d",&A);
    while(A > 1){                                    //Делить до тех пор пока А не стало 1
        if(i > A)break;
        if((A % i) == 0){
              primes[pointer][1] = 0;             //Переменная pointer - указатель на текущую ячейку массива
              while((A % i) == 0){                //Делим до тех пор, пока делится на простой множитель i :-)
                       A = A / i;
                       primes[pointer][1]++;
                       }
              primes[pointer][0] = i;             //Простое число на которое делим - i
              pointer++;                             //Переходим к следующей ячейки массива 
              }
        i++;                                           //Увеличиваем число
    }
    for(int j = 0;j < pointer;j++)               //Выведем что получилось
            printf("%d (%d)\n",primes[i][0],primes[i][1]);
    return 0;
}
Подскажите пожалуйста, где(в чем) я ошибся.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
08.07.2011, 22:13     Разложить число на простые множители #2
Цитата Сообщение от Anonimus1234 Посмотреть сообщение
for(int j = 0;j < pointer;j++) //Выведем что получилось
printf("%d (%d)\n",primes[i][0],primes[i][1]);
В счетчике используете j, а выводите i-й элемент

Добавлено через 1 минуту
C
1
2
for(int j = 0;j < pointer;j++)               //Выведем что получилось
            printf("%d (%d)\n",primes[j][0],primes[j][1]);
Anonimus1234
0 / 0 / 0
Регистрация: 29.08.2008
Сообщений: 10
08.07.2011, 22:24  [ТС]     Разложить число на простые множители #3
Все равно что-то не так

Добавлено через 1 минуту
Сорри, все ОК
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
08.07.2011, 22:26     Разложить число на простые множители #4
Приведите пример, что не так.
Вот и славненько
menqkazu
0 / 0 / 0
Регистрация: 11.02.2015
Сообщений: 3
11.02.2015, 19:45     Разложить число на простые множители #5
Если не трудно, можете найти где у меня ошибка, а то я новичок, никак не могу справится с этой задачкой:
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 a,i,p;
cout<<"give me a number \n";
cin>>a;
while (a>1)
{
p=true;
{
for (i=2;i<=a;i++)
 
if (a%i==0)
{
p=false;
i=i+1;
}
if (p==true)
cout<< i <<"\n";
}
}
Yandex
Объявления
11.02.2015, 19:45     Разложить число на простые множители
Ответ Создать тему
Опции темы

Текущее время: 21:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru