POJ 3006

题目LINK

题意解释

题意就是给了3个数,第一个是最开始的第一个数,第二个是每次累加的数,第三个数是表达输出的是生成的数中,包含的素数中的第n个素数。(有点绕,多读几遍题就理解了)

收获

这道题是更大的一个水题,在之前的POJ2739中用到了素数的判别方法,直白的翻译题意就好了。注意0和1不是素数,第一次的WA就这么贡献的。推荐测试下1 1 1这个数据。

AC代码

#include 

using namespace std;

int if_is_prime_number(int n){
    if(n == 0 || n == 1)
        return 0;
    else{
        for (int i = 2;i * i <= n;i++) {
            if (n % i == 0) return 0;
        }
    }
    return 1;
}

int main(void){
    int a,b,n;
    int output = 0;
    scanf("%d %d %d",&a,&b,&n);
    while (a != 0 && b != 0 && n != 0) {
        int i = 0;
        while (n > 0) {
            if(if_is_prime_number(a + i*b))n--;
            output = a + i*b;
            /*
            cout << "n :" << n << endl;
            cout << "judge :" << if_is_prime_number(a + i*b) << endl;
            cout << "the number :" << a + i*b << endl << endl;
            */
            i++;
        }
        cout << output << endl;
        scanf("%d %d %d",&a,&b,&n);
    }
    return 0;
}

你可能感兴趣的:(POJ 3006)