// UVa 10235 - Simply Emirp #include <iostream> #include <string> #include <string.h> using namespace std; bool prime[1000000]; long long int reverse(long long int n) { long long int m = 0; while (n > 0) { m = m * 10 + n % 10; n /= 10; } return m; } void findprimes() { memset(prime, true, sizeof(prime)); for (int j = 4; j < 1000000; j += 2) prime[j] = false; for (int i = 3; i < 1000; i++) { if (prime[i]) { for (int j = i * i; j < 1000000; j += i + i) prime[j] = false; } } } int main() { findprimes(); long long int n; while (cin >> n) { string sol; if (!prime[n]) sol = "is not prime."; else if (!prime[reverse(n)] || reverse(n) == n) sol = "is prime."; else sol = "is emirp."; cout << n << " " << sol << endl; } return 0; }
Tuesday, June 23, 2015
UVa 10235 - Simply Emirp
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment