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 :)