[펌] 소수를 구할때, 시간을 단축시키는 방법

출처 1. 네이버 지식인 출처 2. https://xeriars.com/45 [Xeriars.com] [펌] 10000000까지의 소수 표와, 구하는 프로그램의 속도를 높여보자. 10000000까지의 소수는 직접 적어드릴수는 없습니다. 10000000까지의 소수의 개수는 정확하게 664579개입니다. 이 글에서는, 소수 구하는 프로그램 소스는 가르쳐 드리지 않습니다. 중간중간에 써드 xeriars.com 10000000까지의 소수는 직접 적어드릴수는 없습니다. 10000000까지의 소수의 개수는 정확하게 664579개입니다. 이 글에서는, 소수 구하는 프로그램 소스는 가르쳐 드리지 않습니다. 중간중간에 써드리는 소스 만으로도 충분히 짜맞추실수 있기 때문이죠. 소수 구하는 법을 아시는 분만 보시기 바랍니다..

인접행렬 그래프

#include #include #define SIZE 100 typedef struct GraphType { int n; // 정점의 개수 int Graph_Matrix[SIZE][SIZE]; }GraphType; int visited[SIZE]; void init(GraphType* g) { int row, col; g->n = 0; for (row = 0;row Graph_Matrix[row][col] = 0; } void insert_vertex(GraphType* g, int v) { if (((g->n) + 1) > SIZE) { fprintf(stderr, "Overflow"); return; } g-..

최대 힙

#include #include #define MAX_SIZE 100 int heap_size; typedef struct Heap { int element[MAX_SIZE]; }heap; void init_(heap* h) { heap_size = 0; } void create(heap *h) { h = (heap*)malloc(sizeof(heap)); } void insert_max_size(heap* h, int item) { int temp; int index = ++(heap_size); if (heap_size == 0) { h->element[index] = item; } while (h->element[index/2] element[heap_size];..

선택정렬 / 삽입정렬

#include int list[10] = {4, 2, 1, 59, 22, 44, 24 ,75, 8, 10}; void selection_sort(int list[]) { int min, i, j; int temp; /* 선택정렬은 인덱스 0~n-2까지 정렬하면 모두 정렬된다.*/ for (i = 0; i = 0 && list[j] > key; j--) list[j + 1] = list[j]; /* 레코드를 오른쪽으로 이동 */ list[j + 1] = key; } return; } void main(void) { selection_sort(list); for (int i = 0; i < 10; i++) printf("%d ", list[i]); int list2[10] = { 4, 2, 1, 59, 2..

해시 테이블

#include #include int SIZE = 10; struct bucket* hashTable; struct node { int key; int value; struct node* next; }; struct bucket { struct node* head; int count; }; struct node* createNode(int key, int value) { struct node* newNode; newNode = (struct node*)malloc(sizeof(struct node)); newNode->key = key; newNode->value = value; newNode->next = NULL; return newNode; } int hashFunction(int key) { r..

자료구조 그래프 BFS코드 in C언어

#include typedef int element; #define MAX_QUEUE 20 typedef struct Queue { int front, rear; element queue[MAX_QUEUE]; }Q; Q q; void init(Q* q) { q->front = q->rear = 0; } int is_empty(Q* q) { if (q->front == q->rear) return 1; else return 0; } int is_full(Q* q) { if ((q->front) == (q->rear+1) % MAX_QUEUE) return 1; else return 0; } void enqueue(Q* q, int item) { if (is_full(q)) { fprintf(stderr, ..

세 값의 중앙값

#include int med3(int a, int b, int c) { if (a >= b) if (b >= c) return b; else if (a c) return a; else if (b > c) return c; else return b; } int main(void) { int a, b, c; printf("세 정수의 중앙값을 구합니다.\n"); printf("a의 값: "); scanf("%d", &a); printf("b의 값: "); scanf("%d", &b); printf("c의 값: "); scanf("%d", &c); printf("중앙값은 %d입니다.\n", med3(a, b, c)); return 0; }

스택 실습/ 후위수식 구현

별 기능 없이 논리만 간단하게 구현 #include #define MAX_STACK_SIZE 100 typedef int element; typedef struct { element stack[MAX_STACK_SIZE]; char top; }StackType; //스택 초기화 함수 void init(StackType *s) { s->top = -1; } //공백 상태 검출 함수 int is_empty(StackType *s) { return (s->top == -1); } //포화상태 검출 함수 int is_full(StackType *s) { return (s->top == (MAX_STACK_SIZE)); } //삽입함수 void push(StackType *s, char item) { if (is..