#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; } |