更新时间:2022-09-15 10:56:57
1 #include <stdio.h> 2 #define MAX 1000 3 #define SAVE 0 4 #define DELETE 1 5 6 int sieve[1000]={0}; //all to SAVE 7 8 int main() 9 { 10 int i,k; 11 int prime; 12 int count=1;//The sum number of the prime numbers 13 //2*i+3 is odd numbers 14 for(i=0;i<MAX;i++) 15 { 16 if(sieve[i]==SAVE) //it is a prime number 17 { 18 //I have a problem here.Why are the front several numbers prime number after one or two sieve process such as 5 or 7 or 11? I just think they are prime nubmers without proving it. 19 prime=i+i+3; 20 count++; 21 for(k=prime+i;k<=MAX;k+=prime) 22 sieve[k]=DELETE; 23 } 24 } 25 printf("%6d",2); 26 27 for(i=0,k=2;i<MAX;i++) 28 { 29 if(sieve[i]==SAVE) 30 { 31 if(k>10) 32 { 33 printf("\n"); 34 k=1; 35 } 36 int temp=i+i+3; 37 printf("%6d",temp); 38 k++; 39 } 40 } 41 printf("\nThe sum number is %d \n",count); 42 return 0; 43 }