1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>

using namespace std;

int y;

int pot10(int x) { //podnosi 10 do danej potęgi
    y=10;
    for(int i=1; i<x; ++i) y*=10;
    return y;
}

bool pierwsza(int x){ //sprawdza czy liczba jest pierwsza
         if(x==1)   return false;
    else if(x==2)   return true;
    else if(x%2==0) return false;
    else {
        for(int i=3; i*i<=x; i+=2) {
            if(x%i==0) return false;
        }
    }
    return true;
}

int main()
{
    long long int liczba;
    int licz=0; //zmienna przechowująca długość liczby (ilość jej cyfr)
    cin >> liczba;
    long long int liczba2 = liczba;
    int a, b;   //liczby powstałe z podzielenia danej liczby

    while(liczba2!=0){  //szukanie długości liczby
        liczba2/=10;    //za każdym wykonaniem pętli dzielimy liczbę przez 10 i zwiększamy licz
        ++licz;
    }

    for(int j=1; j<licz; j++) { //sprawdza możliwości utworzenia liczb
        a = liczba/pot10(j);    //usuwa tą drugą liczbę poprzez obcinanie końcówki - powstaje 1. liczba
        if(a%10!=0) {           //żeby potem nie chyciło liczby z zerem na początku dodajemy w 48. wersie j aby przeskoczyć to 0
            if(pierwsza(a) == true) {
                b = liczba%pot10(j);    //bierze końcówkę z liczby - powstaje 2. liczba
                if(pierwsza(b) == true){
                    cout << "TAK";      //jeśli obydwie są pierwsze wypisz tak
                    return 0;
                }
            }
        }
        else j++;
    }

    cout << "NIE";

    return 0;
}