中文题目: http://www.microsoft.com/technet/scriptcenter/funzone/games/games08/chs/aevent6.mspx
英文解题: http://www.microsoft.com/technet/scriptcenter/funzone/games/solutions08/apssol06.mspx
题目就是打印200以内的所有素数, 素数的定义大家都知道. 蛮力法很慢, 对于数字n, 我们确定从 2到n-1都不能被整除. 而我选择了比上述方法简单一点的技巧, 测试2到根号n之间的所有数字, 这样我们可以少计算很多次. 最好的办法是每找到一个素数就记录下来, 对于数字n来说, 如果所有小于n的素数都不能整除, 那么这个数字就是素数. 最后一种方法有点像动态规划. 我也懒得写, 旧代码直接拿来用的:
$stop
=
200
;
:
next
foreach
(
$i
in
2
..
$stop
)
{
for
(
$c
=
2
;
$c
-
le [math]
::
Sqrt
(
$i
);
$c
++
)
{
if
(
$i
%
$c
-
eq
0
) {
continue
next
}
}
"
$i
"
}
素数筛选
本文介绍了一种高效的算法来找出200以内的所有素数。通过只检查到根号n的范围,大大减少了计算次数,提高了查找素数的速度。
981

被折叠的 条评论
为什么被折叠?



