給你一個n,輸出第n個質數
// Comment
#include <stdio.h>
#include <stdint.h>
#define n 10000
uint64_t primes[n];
int main(void){
int primesSize = 2;
primes[0] = 2;
primes[1] = 3; // notice n must >= 2
for(uint64_t j = 4; j < UINTMAX_MAX; ++j){
if(primesSize >= n)
break;
for(int k = 0; k < primesSize; ++k){
if(j % primes[k] == 0)
break;
else if(primes[k]*primes[k] > j){
primes[primesSize] = j;
primesSize++;
break;
}
}
}
printf("%lu\n", primes[n-1]);
return 0;
}
也可以使用6n+-1法
簡易版是在第一層for迴圈加入
if(j%2==0||j%3==0)continue;