PKU 3006 Dirichlet's Theorem on Arithmetic Progressions
- 素数
- TLEがきついためおそらくエラトステネスの篩が必須
int main() { #define MAX (1024*1024) static bool flag[MAX]; memset(flag, -1, sizeof(flag)); flag[0] = flag[1] = false; for (int i = 2; i * i < MAX; ++i){ if (!flag[i]){ continue; } for (int j = i * i; j < MAX; j += i){ flag[j] = false; } } for (int a, d, n; cin >> a >> d >> n && (a || d || n); ) { int counter = 0; int value; for (value = a; ; value += d) { if (flag[value]) { ++counter; } if (counter == n) { break; } } cout << value << endl; } }