理解起来还是很好理解的,自然数可分成1、素数、合数这三类,一定范围内的自然数中,哪些数是素数呢?古时候,希腊有位叫做埃拉多染尼的数学家想出了如下办法:当时,他将1000内的自然数依次写在一块硬方格板上,然后用2试除各数,将能被整除的都用刀子剜掉;继2之后再用3来如此而行;3之后再用5来如此而行……这样一直进行到无法进行而为止,最后再剜掉1。于是,剩下的没能被剜掉的数便是1000内的素数。
程序就是这样
1 int i; 2 int a[ 10000]; 3 for(i = 2 ;i < 10000;i++) 4 a[i] = 1; 5 a[ 0] = a[ 1] = 0; 6 7 for(i = 2; i < sqrt( 10000); i++) // 从2开始遍历有根号的,然后依次向后加i, 8 if(a[i] == 1) 9 for(j = i * i; j < 10000; j+=i) // 从i* i开始因为2,3,等不是合数,因此 10 a [j]= 0;转载于:https://www.cnblogs.com/yelcoved/archive/2013/02/10/2909700.html
