#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
bool isPrime(long long n)
{
long long k = 2;
if (n == 1) return false;
while (k * k <= n)
{
if ((n % k) == 0) {
//cout << n << "jest podzielna przez " << k << endl;
return false;
}
else k++;
}
//cout << n << "jest pierwsza" <<endl;
return true;
}
int main()
{
string wejscie = "";
cin >> wejscie;
unsigned int pos = 0;
int cyfra_przed, cyfra_po, cyfra_ostatnia;
long long liczba_przed, liczba_po;
while (pos < wejscie.length()-1)
{
pos++;
liczba_przed = atoll(wejscie.substr(0, pos).c_str());
liczba_po = atoll(wejscie.substr(pos, wejscie.length()).c_str());
cyfra_przed = atoi(wejscie.substr(pos-1, 1).c_str());
cyfra_po = atoi(wejscie.substr(pos, 1).c_str());
cyfra_ostatnia = atoi(wejscie.substr(wejscie.length()-1, 1).c_str());
//cout << "przed:" << liczba_przed << " za:" << liczba_po << endl;
//cout << "cyfra przed:" << cyfra_przed << " cyfra po:" << cyfra_po << endl;
if (liczba_przed!=2 && cyfra_przed == 2) {
//cout << "---skaczemy bo 2" << endl;
continue;
}
if (liczba_po!=2 && cyfra_ostatnia == 2) {
//cout << "---skaczemy bo ostatnia parzysta i nie 2" << endl;
continue;
}
if (cyfra_po == 0){
//cout << "---skaczemy bo 0" << endl;
continue;
}
if (cyfra_przed == 0 || cyfra_przed == 4 || cyfra_przed == 6 || cyfra_przed == 8 ){
//cout << "---skaczemy bo parzyscie" << endl;
continue;
}
if (cyfra_ostatnia == 0 || cyfra_ostatnia == 4 || cyfra_ostatnia == 6 || cyfra_ostatnia == 8 ){
//cout << "---skaczemy bo ostatnia parzysta" << endl;
continue;
}
if (isPrime(liczba_przed) && isPrime(liczba_po))
{
cout << "TAK";
exit(0);
}
}
cout << "NIE";
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <iostream> #include <string.h> #include <stdlib.h> using namespace std; bool isPrime(long long n) { long long k = 2; if (n == 1) return false; while (k * k <= n) { if ((n % k) == 0) { //cout << n << "jest podzielna przez " << k << endl; return false; } else k++; } //cout << n << "jest pierwsza" <<endl; return true; } int main() { string wejscie = ""; cin >> wejscie; unsigned int pos = 0; int cyfra_przed, cyfra_po, cyfra_ostatnia; long long liczba_przed, liczba_po; while (pos < wejscie.length()-1) { pos++; liczba_przed = atoll(wejscie.substr(0, pos).c_str()); liczba_po = atoll(wejscie.substr(pos, wejscie.length()).c_str()); cyfra_przed = atoi(wejscie.substr(pos-1, 1).c_str()); cyfra_po = atoi(wejscie.substr(pos, 1).c_str()); cyfra_ostatnia = atoi(wejscie.substr(wejscie.length()-1, 1).c_str()); //cout << "przed:" << liczba_przed << " za:" << liczba_po << endl; //cout << "cyfra przed:" << cyfra_przed << " cyfra po:" << cyfra_po << endl; if (liczba_przed!=2 && cyfra_przed == 2) { //cout << "---skaczemy bo 2" << endl; continue; } if (liczba_po!=2 && cyfra_ostatnia == 2) { //cout << "---skaczemy bo ostatnia parzysta i nie 2" << endl; continue; } if (cyfra_po == 0){ //cout << "---skaczemy bo 0" << endl; continue; } if (cyfra_przed == 0 || cyfra_przed == 4 || cyfra_przed == 6 || cyfra_przed == 8 ){ //cout << "---skaczemy bo parzyscie" << endl; continue; } if (cyfra_ostatnia == 0 || cyfra_ostatnia == 4 || cyfra_ostatnia == 6 || cyfra_ostatnia == 8 ){ //cout << "---skaczemy bo ostatnia parzysta" << endl; continue; } if (isPrime(liczba_przed) && isPrime(liczba_po)) { cout << "TAK"; exit(0); } } cout << "NIE"; return 0; } |
English