/*
Krzysztof Dziembała
*/
#include <iostream>
using namespace std;
inline bool IsPrime(int64_t number){
if(((!(number & 1)) && number != 2) || (number < 2) || (number % 3 == 0 && number != 3))
return (false);
for(int64_t k = 1; 36*k*k-12*k < number; k++)
if ((number % (6*k+1) == 0) || (number % (6*k-1) == 0))
return (false);
return true;
//Source: https://stackoverflow.com/questions/4424374/determining-if-a-number-is-prime/4424496#4424496 (lekko zmodyfikowane i w stylu zgodnym z resztą programu)
}
int main(){
int64_t lic;
cin >> lic;
int64_t i = 10;
do{
int64_t cz2 = lic%i;
if((cz2 - lic%(i/10))){
if(IsPrime(cz2)){
int64_t cz1 = lic/i;
if(IsPrime(cz1)){
cout << "TAK\n";
return 0;
}
}
}
i*=10;
}while(i < lic);
cout << "NIE\n";
return 0;
}
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 | /* Krzysztof Dziembała */ #include <iostream> using namespace std; inline bool IsPrime(int64_t number){ if(((!(number & 1)) && number != 2) || (number < 2) || (number % 3 == 0 && number != 3)) return (false); for(int64_t k = 1; 36*k*k-12*k < number; k++) if ((number % (6*k+1) == 0) || (number % (6*k-1) == 0)) return (false); return true; //Source: https://stackoverflow.com/questions/4424374/determining-if-a-number-is-prime/4424496#4424496 (lekko zmodyfikowane i w stylu zgodnym z resztą programu) } int main(){ int64_t lic; cin >> lic; int64_t i = 10; do{ int64_t cz2 = lic%i; if((cz2 - lic%(i/10))){ if(IsPrime(cz2)){ int64_t cz1 = lic/i; if(IsPrime(cz1)){ cout << "TAK\n"; return 0; } } } i*=10; }while(i < lic); cout << "NIE\n"; return 0; } |
English