埃拉托色尼筛选法
简介
针对自然数列中的自然数而实施的,用于求一定范围内的质数。
算法思想
- 挖去1;
- 用刚才被挖去的数的下一个数p,把p的倍数挖掉;
- 检查p是否小于sprt(n)的整数部分,如果是,则返回(2)继续执行,否则就结束;
- 纸上剩下的数就是素数。
代码
递归实现
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int* Get_Prime(int num)
{
int *a = NULL, *get = NULL;
int *p = NULL, *q = NULL;
int i = 0, j = 0;
/*
* the exit.
*/
if (num <= 10)
{
a = malloc (sizeof(int) * 10);
for (i = 0; i < 10; i++)
a[i] = 0;
a[2-1] = 2; a[3-1] = 3;
a[5-1] = 5; a[7-1] = 7;
a[num - 1] = -1;
return a;
}
/*
* step 1: get the pri