Плиз подскажите где у меня ошибка. C++

компьютеры программирование windows C++ С++



Вот код:

/*программа для разбиения числа на простые множители
ответ должен выходить таким образом:
36
2 2
3 2
где первое число это само простое число а через табуляцию его степень
*/
#include <iostream>
using namespace std;
int main () {
int c, a, i, b;
b=1;
cin>>a;
for (i=2; i*i<=a; i++){
if ((a%i) == 0){
for(c=i; (a%i)==0; b++){
a=a%c;}

cout << c<< "\t\t" << b <<"\n";
}
}
}

после ввода числа а просто все останавливается, и консоль не закрывается, там либо что-то зациклено, либо я конкретно туплю. До этого писал на паскале в лицее такую же, теперь перевел в С++ а тут что-то не так.

Примечание:
Я понял, ступил, забыл написать a=a%i;
ну и еще в конце return 0
но все равно не работает или зациклено

Примечание:
(a%i)==0
это остаток от деления числа а на i равен 0
Ответы:
(a%i)==0 это что?
2 gridm:
все хорошо, но нужно не забывать обнулять счетчик степеней для каждого следующего делителя.
и if можно убрать т.к. условие такое же как и в цикле, причем оно проверяется перед каждым, в том числе перед первым, входом.
я полагаю, что
for(int i = 2; i * i <= a; i++)
{
 b = 0;
 while((a % i) == 0)
 {
   b++;
   a %= i;
 }
 cout << i << "\t" << b << endl;
}


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.