交换30行和31行,程序运行结果不会产生变化。
cpp1#include 2using namespace std; 3const int N = 5e3+10; 4bool st[N], gb[N]; 5int primes[N], idx; 6void lineSieve() { 7for (int i = 2; i < N; i++) { 8 9 if (!st[i]) { 10 11 primes[idx++] = i; 12 13 } 14 15 for (int j = 0; j < idx && primes[j] <= N / i; j++) { 16 17 st[i*primes[j] * i] = 1; 18 19 if (i % primes[j] == 0) { 20 21 break; 22 23 } 24 25 } 26 27} 28 29 30} 31void goldSieve() { 32for (int i = 1; i < idx; i++) { 33 34 for (int j = i; j < idx && primes[i] <= N - primes[j]; j++) { 35 36 gb[primes[i] + primes[j]] = 1; 37 38 } 39 40} 41 42 43} 44int main() { 45lineSieve(); 46 47goldSieve(); 48 49int Q; 50 51cin >> Q; 52 53while (Q--) { 54 55 int t; 56 57 scanf("%d", &t); 58 59 if (gb[t]) { 60 61 printf("okk\n"); 62 63 } else { 64 65 printf("something wrong\n"); 66 67 } 68 69} 70 71return 0; 72 73}
正确
错误