📄 goldbach.c
字号:
/* Demo of Goldbach Conjecture implementation, * using dynamic link data structure. * * Written by Cyril Hu (cyrilhu@gmail.com), public domain. */#include<stdio.h>#include<stdlib.h>#define M 1024typedef struct pri { int e; struct pri *next;}P;P *t, *head;void goldbach(int x, int flag);P *get_pri(int x, int flag);int is_p(int x);void find(int x, P *head);void freelist(P *head);int main(void){ int i; printf("4 = 2 + 2\n"); for(i=4; i<=M; i+=2) { goldbach(i, i-4); } free(head); return 0; }void goldbach(int x, int flag){ P *p; p = get_pri(x, flag); find(x,p);}P *get_pri(int x, int flag){ P *p; if(is_p(x-1) != 0) { if((p = malloc(sizeof(P))) == NULL) { fprintf(stderr,"Fatal: mem alloc failed !!!\n"); exit(1); } p->e = is_p(x-1); if(flag==0) { head = t = p; } else { t->next = p; t = p; } p->next = NULL; } return head;}int is_p(int x){ int i; for(i=2; i<x; i++) if(x%i==0) return 0; return x;}void find(int x, P *head){ P *p, *q; for(p=head; p->next != NULL; p = p->next) for(q = p->next; q != NULL; q = q->next) if(p->e + q->e == x) printf("%d = %d + %d\n", x, p->e, q->e);}void freelist(P *head){ P *p, *q; for(p=head; p != NULL; p = q) { q = p->next; free(p); } head = t = NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -