2008脚本大赛PowerShell高级组Event 6解题及分析

来源:互联网 发布:mac rmvb mp4 编辑:程序博客网 时间:2024/05/17 02:42

中文题目: 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"
}
原创粉丝点击