求n以内的素数

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:24:47
要求用C语言来实现

求质数的算法并不难,关键是要看算法的速度。我不敢说这个算法是最好的,不过上次和同事讨论过,应该是很高效的一个。
#include <stdio.h>
#include <malloc.h>
#include <time.h>

#define MAX_NUM 1000000
int main()
{
long start = clock();
int num = 0;
int* primes = (int*)malloc( MAX_NUM*sizeof(int) );

primes[num++] = 2;
unsigned __int64 temp;

for(int i = 3; i <= MAX_NUM; i+=2 )
{
for( int j = 1; j < num; ++j )
{
if( i%primes[j] == 0 ) goto NOT_PRIME;
temp = primes[j]*primes[j];
if( temp >= i ) break;
}

primes[num++] = i;
NOT_PRIME:
;
}

printf("find %d primes, cost %ld\n", num, clock()-start);
free(primes);

getchar();
return 0;
}

int ss(int x)
{
int k;
for (k=2;k<x;k++)