Napisz program sprawdzający, czy suma czynników pierwszych liczby naturalnej wpisanej z klawiatury jest liczbą pierwszą. C++.

Odpowiedź :

#include <iostream>

#include <vector>

#include <math.h>

using namespace std;

void rozklad(vector <int> &czynniki, int liczba)

{

   int bufor = 2;

   while(liczba > 1)

   {

       while(liczba % bufor == 0)

       {

           czynniki.push_back(bufor);

           liczba = liczba / bufor;

       }

       bufor ++;

   }

}

bool czy_liczba_pierwsza(vector<int> czynniki)

{

   int suma = 0;

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

   {

       suma += czynniki[i];

   }

   for(int i = 2; i < suma; ++i)

   {

       if(suma % 2 == 0)

       {

          return true;

       }

   }

   return false;

}

using namespace std;

int main()

{

   vector<int>czynniki;

   int liczba;

   cout<<"Podaj liczbe: ";

   cin>>liczba;

   rozklad(czynniki,liczba);

   if(czy_liczba_pierwsza(czynniki))

   {

   cout<<"Suma czynnikow pierwszych nie daje liczby pierwszej"<<endl;

   }

   else

   {

       cout<<"Suma czynnikow pierwszych daje liczbe pierwsza";

   }

   return 0;

}