#include<stdio.h> #include<stdlib.h> #include<string.h> #include<stdint.h> #include <inttypes.h> bool isPrime(int64_t v) { if(v<2) return false; if(v==2 || v==3) return true; if((v%2)==0 || (v%3)==0) return false; for(int64_t i=5;i*i<v;i+=2) if((v%i)==0) return false; return true; } int64_t parse(char* src, int len) { int64_t res; char tmp=src[len]; src[len]=0; sscanf(src, "%" SCNd64, &res); src[len]=tmp; return res; } int main(int argc, char** argv) { char in[16]; scanf("%s",in); int len=strlen(in); for(int i=1;i<len;++i) { if(in[i]=='0') continue; // nie moze byc zer wiodacych int64_t p1=parse(in, i); int64_t p2=parse(in+i, len-i); // printf("Checking: %"PRId64" %"PRId64"\n", p1, p2); if(isPrime(p1) && isPrime(p2)) { printf("TAK\n"); return 0; } } printf("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 40 41 | #include<stdio.h> #include<stdlib.h> #include<string.h> #include<stdint.h> #include <inttypes.h> bool isPrime(int64_t v) { if(v<2) return false; if(v==2 || v==3) return true; if((v%2)==0 || (v%3)==0) return false; for(int64_t i=5;i*i<v;i+=2) if((v%i)==0) return false; return true; } int64_t parse(char* src, int len) { int64_t res; char tmp=src[len]; src[len]=0; sscanf(src, "%" SCNd64, &res); src[len]=tmp; return res; } int main(int argc, char** argv) { char in[16]; scanf("%s",in); int len=strlen(in); for(int i=1;i<len;++i) { if(in[i]=='0') continue; // nie moze byc zer wiodacych int64_t p1=parse(in, i); int64_t p2=parse(in+i, len-i); // printf("Checking: %"PRId64" %"PRId64"\n", p1, p2); if(isPrime(p1) && isPrime(p2)) { printf("TAK\n"); return 0; } } printf("NIE\n"); return 0; } |