Question #7382

Hi, I have no ideam why my program crashes. It is supposed to take in a number and print its decomposition into a product of prime factors.

example N = 48 then the program prints 2^4*3^1

#include <iostream>

#include <vector>

using namespace std;

int main () {

vector<int> factors;

int N, count=0;

cout << "Please enter an integer number greater than 0";

cin >> N;

while (N <= 0) {

cout << "Error. Number out of range. Please re-enter a valid number.";

cin >> N; }

while ((N %2) == 0) {

factors.push_back(2);

N = N / 2; }

for (int f=3; f <= N; f += 2) {

while (((N%f) == 0) && (N != f)) {

factors.push_back(f);

N = N / f;

if (N == f)

factors.push_back(N);} }

for ( int i= 0; i < factors.size(); i++){

if ((factors[i]) == (factors[i+1]))

{count++;}

else {

cout << factors[i] << "^" << count << "*";

count = 1;

}

}

cout << factors[factors.size()] << "^" << count;

return 0; }

example N = 48 then the program prints 2^4*3^1

#include <iostream>

#include <vector>

using namespace std;

int main () {

vector<int> factors;

int N, count=0;

cout << "Please enter an integer number greater than 0";

cin >> N;

while (N <= 0) {

cout << "Error. Number out of range. Please re-enter a valid number.";

cin >> N; }

while ((N %2) == 0) {

factors.push_back(2);

N = N / 2; }

for (int f=3; f <= N; f += 2) {

while (((N%f) == 0) && (N != f)) {

factors.push_back(f);

N = N / f;

if (N == f)

factors.push_back(N);} }

for ( int i= 0; i < factors.size(); i++){

if ((factors[i]) == (factors[i+1]))

{count++;}

else {

cout << factors[i] << "^" << count << "*";

count = 1;

}

}

cout << factors[factors.size()] << "^" << count;

return 0; }

Expert's answer

Learn more about our help with Assignments: C++

## Comments

## Leave a comment