首页 > 代码库 > 试探究一种查找素数算法
试探究一种查找素数算法
解题思路:构造链表,使用筛除法
例如:求10以内素数
链表初始化:2 3 4 5 6 7 8 9 10
进行第一轮筛选后:2 3 5 7 9
也就是用2后面的数去除2,
第二轮筛选后:2 3 5 7
也就是用3后面的数去除3,
第三轮筛选后:2 3 5 7
也就是用5后面的数去除5
第四轮筛选后:2 3 5 7
代码:
#include <stdio.h> #include <stdlib.h> #define N 1e5 // over this it is so slowly typedef struct LinkNode { int data; struct LinkNode *next; }LinkNode; LinkNode *head; void Init() { LinkNode *p, *r; int i; head = (LinkNode *)malloc(sizeof(LinkNode)); if(!head) exit(1); // this is nearly impossible head->next = 0; r = head; for(i = 2;i <= N;i++) { p = (LinkNode *)malloc(sizeof(LinkNode)); if(!p) exit(1); p->data = http://www.mamicode.com/i;>此算法还是不能解决大量素数情况,如果超过1e5的素数,就会很慢,本人想可以将大数据分解,使用多线程,这样应该可以的。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。