The specific Sieve method is: first, the N natural numbers in order. 1 is not a prime, nor a composite, to be crossed. The second number 2 is the prime number left, and all the numbers after 2 that can be divisible by 2 are crossed. 2 The number after the first not to be crossed is 3, leave 3, and then divide 3 all the numbers divisible by 3. 3 The number after the first not to be crossed is 5, leave 5, and then divide 5 all the numbers divisible by 5. This has been done, will be not more than N of all composite are screened out, leaving is not more than N of all prime numbers. Because the Greeks are to write the number on the painted wax plate, each to draw a number, on the top of the small point, the search for prime numbers after the completion of the work, many small dots like a sieve, so the Eratosthenes method is called "Eratosthenes sieve Method", referred to as "Sieve method".
Here's the code:
1#include <stdio.h>2#include <stdlib.h>3#include <string.h>4 5 intMainintargcChar*argv[])6 {
Looking for all primes between 2~num7 if(ARGC <2)8 {9printf"Usage:%s num\n", argv[0]);Ten return 0; One } A intIMax = Atoi (argv[1]); - - if(IMax <2) the { -printf"num is too little, num >=2"); - return 0; - } + - Char*p = (Char*) malloc (sizeof(Char) * IMax +1); +Memset (P,sizeof(Char) * IMax +1,0); A at inti =0, j =0, k =0; - for(i =2; I <= IMax; i++) - { - for(j = i + i; j <= IMax; J + =i) - { -P[J] =1; in } - } toFILE * fp =NULL;
After the execution of the program, the number of prime numbers we need is in the file Prime-number.txt + if(fp = fopen ("Prime-number.txt","W")) ==NULL) - { the return 0; * } $K =0;Panax Notoginseng intIall =0; - for(i =2; I <= IMax; i++) the { + if(0==P[i]) A { theIall + +; +k++; - //output to FILE:FP, write these primes to the file $fprintf (FP,"%6d", i); $ if(Ten==k) - { -fprintf (FP,"\ n"); theK =0; - }Wuyi //printf ("%d", I); the } - } Wuprintf"\ n"); - fclose (FP); About Free (p); $printf"All :%d\n", Iall); - - return 0; -}
The output is put in Baidu net disk: Http://pan.baidu.com/s/1pJv58Wb
Storm
Mail: [Email protected]
Using C language to realize prime sieve method to obtain all primes within 100 million (100000000)