Proszę pilnie o pomoc!! Napisz program. który wczyta z klawiatury liczbę całkowitą oraz sprawdzi czy ta liczba jest liczbą pierwszą. Jeśli jest to wypisze na ekranie sumę cyfr tej liczby.
Opisz polecenia użyte w tym programie.
( w c++)


Odpowiedź :

Odpowiedź:

#include <iostream>

using namespace std;

bool isPrime(int n) //funkcja do sprawdzania czy liczba jest liczbą pierwszą

{

   int countDivisors = 0; //licznik dzielników liczby

   for (int i = 1; i < n; i++) //pętla od 1 do n-1

   {

       if (n % i == 0)   //jeśli reszta z dzielenia = 0 to ta liczba jest dzielnikiem

       {

           countDivisors++;  //powiększamy liczbę dzielników

       }

   }

   return countDivisors == 1;  //gdy jest jeden dzielnik (czyli jeśli jest podzielna jedynie przez 1 to jest liczbą pierwszą)

}

int digitsSum(int n)

{

   int digitCounter = 0;  //licznik cyfr w liczbie  

   if (isPrime(n))  //jeśli jest liczbą pierwszą to liczymy ilość cyfr

   {

       while (n != 0)  //dopóki n !=0

       {

           digitCounter++; //liczymy ile cyfr ma

           n /= 10; // "skreślamy jedno 0" z cyfry

           

       }

       return digitCounter;  //zwracamy sumę cyfr

   }

   return 0; //zwracamy 0 jeśli liczbą nie jest liczbą pierwszą

}

int main(int argc, char const *argv[])

{

   int n;

   cout << "Podaj liczbe" << endl;

   cin >> n;

   cout << digitsSum(n); //wywołanie funkcji

   return 0;

}

Wyjaśnienie:

Wszystko wyjaśnione po //. Jak coś niejasne to pytaj :)