Dany jest ciąg liczb naturalnych wprowadzonych z klawiatury, zakończony zerem. Napisz program, który wypisze kolejne liczby ciągu w postaci iloczynu liczb pierwszych.
Np. Dla ciągu liczb: 24, 100, 6, 1520, 0
2*2*2*3
2*2*5*5
2*3
2*2*2*2*5*19

C++pls help​


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <string>

std::string result(int a) { //funkcja robiąca cała robotę

   std::string res; //zmienna do przechowywania wyniku

   int i = 2; //licznik pętli ustawiony na najmniejszą liczbę pierwszą czyli 2

   while (a != 1) { //pętla się zatrzymuje, gdy nie możemy podzielić liczby przez liczbę pierwszą

       if (a % i == 0) { //jeśli nasza liczba jest podzielna przez liczbę to dzielimy ja przez nią i zapisujemy do niej wynik

           a = a / i;

           res += std::to_string(i) + "*"; //zapisujemy liczbę do wyniku i dajemy gwiazdkę

           continue; // jak to zrobimy, to lecimy znowu pętlą od początku

       }

       i++;

   }

   return res.substr(0, res.length() - 1); //zwracamy zmienną bez ostatniego znaku

}

int main() {

   int a = 1;

   while (a != 0) { //pętla przyjmująca wartości dopóki nie podamy 0

       std::cin >> a;

       std::cout << result(a) << std::endl;

   }

   return 0;

}

Wyjaśnienie:

Jak coś nadal niejasne to pisz