首页 > 代码库 > 试探究一种查找素数算法

试探究一种查找素数算法

解题思路:构造链表,使用筛除法

例如:求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的素数,就会很慢,本人想可以将大数据分解,使用多线程,这样应该可以的。