Czy liczba jest super-pierwsza? (C++) Liczba jest super-pierwsza, jeśli jest liczbą pierwszą oraz suma jej cyfr jest też liczbą pierwszą. Taką liczbą jest np. 101. Sprawdź, czy podana liczba naturalna jest liczbą super-pierwszą.
Według Wikipedii liczba super pierwsza to taka, której pozycja wśród liczb pierwszych jest również liczbą pierwszą. Zatem ktoś popełnił błąd podczas tworzenia treści tego zadania. Niemniej odpowiedź znajduje się w załączniku (ta zgodna z treścią zadania):
Odpowiedź:
#include <iostream>
int digitSum(int n) { //liczymy rekurencyjnie sumę cyfr w liczbie
if (n == 0) { //jesli n to 0 to zwracamy 0
return 0;
}
return digitSum(n / 10) + n % 10; //sprawdzamy ostatnia cyfre dopoki n != 0
}
bool isPrime(int n) { //funkcja sprawdzająca czy liczba jest pierwsza
int counter = 0;
for (int i = 1; i <= n; i++) { //pętla od 1 do n włącznie
if (n % i == 0) { //jeśli jest podzielna to zwiekszamy licznik o 1
counter++;
}
}
return counter == 2; //jesli licznik to 2 (liczba pierwsza czyli podzielna przez n i 1) to jest pierwsza
}
bool isSuperPrime(int n) {
if (isPrime(n) && isPrime(digitSum(n))) {
return true;
}
return false;
}
int main() {
int n;
std::cin >> n;
if (isSuperPrime(n)) {
std::cout << "Jest super pierwsza";
} else {
std::cout << "Nie jest super pierwsza";
}
return 0;
}
Wyjaśnienie:
Jak coś niejasne to pytaj
Według Wikipedii liczba super pierwsza to taka, której pozycja wśród liczb pierwszych jest również liczbą pierwszą. Zatem ktoś popełnił błąd podczas tworzenia treści tego zadania. Niemniej odpowiedź znajduje się w załączniku (ta zgodna z treścią zadania):