【问题分析】: 这个问题可以有两种解法:一种是用“筛子法”,另一种是从2->N检查,找出质数。 先来简单介绍一下“筛法”,求2~20的质数,它的做法是先把2~20这些数一字排开: 2?3?4?5?6?7?8?9?10?11?12?13?14?15?16?17?18?19?20 先取出数组中最小的数,是2,则判断2是质数,把后面2的倍数全部删掉。 2?|?3 5?7?9?11?13?15?17?19 接下来的最小数是3,取出,再删掉3的倍数 2?3?|?5?7?11?13?17?19 一直这样下去,直到结束。 筛法求质数的问题时,非质数的数据有很多是重复的。例如,如果有一个数3×7×17×23,那么在删除3的倍数时会删到它,删7、17、23时同样也会删到它。有一种“线性筛法”,可以安排删除的次序,使得每一个非质数都只被删除一次。