这行ruby代码检测素数(太棒了!)。
("1" * n) !~ /^1?$|^(11+?)\1+$/ # where n is a positive integer
详情在此博文http://www.noulakaz.net/weblog/2007/03/18/a-regular-expression-to-check-for-prime-numbers/
中进行了解释我很好奇它以BIG-O表示法的方式表现。有人帮忙吗?
答案 0 :(得分:5)
根据经验数据,它似乎是 O(n 2 )。
我在前10000个素数的每100个上运行Ruby代码。结果如下:
蓝点是记录的时间,橙色线是y = 2.9e-9 * x^2
。该线完美地拟合数据,表明复杂度为O(n 2 )。
这是可以预料到的,因为正则表达式会检查所有可能的除数,以查看它们中的任何除数是否在字符串中出现了很多次。