日常笔记2009年5月3日星期日
Perl代码
subis_prime{my($n)=@_;return(1x$n)!~m/\A(?:1?|(11+?)(?\1+))\Z/xms;}
解析
非质数包括
\A表示1串的开始
\Z表示1串的结束
?:1?匹配0和1
11+匹配1的数的11串也就是说第一部分至少是2
(?\1+)表示当前的1串可以被1的数整除也就是说至少是前面匹配的第一部分的2倍
(11+?)(?\1+)至少是2x2=4
目前还没想好的问题
11+应该是从111111111这样递增检测到最后才确定$n是质数的那么
假如先确定了$n不能被2整除还会再去检测$n能否被4整除
这种情况应该是重复检测了发贴者lsyx|发布时间00:27标签0评论:
发表评论
订阅评论failed!
Javascriptnotsupportedhere!
0 评论:
发表评论