/* n jest sklejeniem 2 liczb pierwszych limity: 1<=n<=1e13<2^44 */ #include <stdio.h> int isprime(long long a) { long long q; if (a<2) return 0; if (a>2 && a%2==0) return 0; for (q=3; q*q<=a; q+=2) if (a%q==0) return 0; return 1; } int main() { long long n, a, b, q; scanf("%lld", &n); for (q=1, a=n/10, b=n%10; a>0; q*=10, a/=10, b=n%(10*q)) if (b>=q) { if (isprime(a) && isprime(b)) { puts("TAK"); return 0; } if (b%2==0 || b%5==0) break; } puts("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 | /* n jest sklejeniem 2 liczb pierwszych limity: 1<=n<=1e13<2^44 */ #include <stdio.h> int isprime(long long a) { long long q; if (a<2) return 0; if (a>2 && a%2==0) return 0; for (q=3; q*q<=a; q+=2) if (a%q==0) return 0; return 1; } int main() { long long n, a, b, q; scanf("%lld", &n); for (q=1, a=n/10, b=n%10; a>0; q*=10, a/=10, b=n%(10*q)) if (b>=q) { if (isprime(a) && isprime(b)) { puts("TAK"); return 0; } if (b%2==0 || b%5==0) break; } puts("NIE"); return 0; } |