1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdint.h> // uint64_t, uint32_t
#include <inttypes.h> // PRIu64
#include <stdbool.h> // bool
 
bool is_prime(uint32_t num);
 
int main(void)
{
  uint32_t max_num = 2000000;
  uint32_t num = 3;
  uint64_t sum = 2// for even prime number: 2
 
  for (num = 3; num < max_num; num += 2)
    if (is_prime(num)) sum += (uint64_t)num;
 
  printf("%" PRIu64 "\n", sum);
  return 0;
}
 
bool is_prime(uint32_t num) {
  uint32_t i = 5;
  bool is_prime_return = true;
 
  if (num == 1) {
    is_prime_return = false;
  }
  else if (num <= 3 && num > 1) { // 2, 3
    // is_prime_return = true;
  }
  else if (num % 2 == 0 || num % 3 == 0) {
    is_prime_return = false;
  }
  else {
    for (i = 5; i * i <= num; i += 6)
      if (num % i == 0 || num % (i + 2== 0) {
        is_prime_return = false;
        break;
      }
    // is_prime_return = true;  
  }
 
  return is_prime_return;
cs

보장된 비트수를 원하면 stdint.h 써 C 표준이야