2019年3月20日 星期三

prime nummber (C)

prime nummber
給你一個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;

沒有留言:

張貼留言