*(primes_i + count_i++) = trail_i;
等價展開:
int index = count_i; // 當前 count_i 值
count_i++; // 後置自增,count_i 變為 index+1
primes_i[index] = trail_i; // 指針算術:primes_i + index 即 &primes_i[index],解引用賦值
代碼實現**試除法求質數**:`primes_i` 存儲已找到的質數,`trail_i` 為候選數,`count_i` 為已找到質數個數。內層循環用已有質數試除,無因數則加入質數表。
std::vector primes = {2, 3, 5};
long candidate = 5;
while (primes.size() < 100) {
candidate += 2;
bool isPrime = true;
for (long p : primes) {
if (p * p > candidate) break; // 優化:只試除到 sqrt
if (candidate % p == 0) { isPrime = false; break; }
}
if (isPrime) primes.push_back(candidate);
}