sundeepblue
4/23/2014 - 2:31 PM

Print out all prime numbers in a given string. abc2134kd31 -> 2, 13, 3, 3, 31

Print out all prime numbers in a given string. abc2134kd31 -> 2, 13, 3, 3, 31

bool is_prime(long long n) {
    if(n <= 2) return true;
    if(n % 2 == 0) return false; // forgot
    for(int i=3; i*i <= n; i+=2)
        if(n % i == 0) return false;
    return true;
}

bool is_digit(char c) {
    return c >= '0' && c <= '9';
}

void print_prime_in_string (const string& s) {
    if(s.empty()) return;
    int N = s.size();
    for(int i=0; i<N; i++) {
        if(is_digit(s[i]) == false) continue;
        long long sum = 0;
        int j = i;
        while(j < N && is_digit(s[j])) {
            sum = 10 * sum + s[j] - '0';
            if(is_prime(sum))
                cout << sum << endl;
            j++;
        }
    }
}