Python中的正则表达式实现素数函数(源自Perl)

9 投票
1 回答
1010 浏览
提问于 2025-04-15 19:02

我看过一篇文章,里面提到了一种用 Perl 语言写的正则表达式 /^1?$|^(11+?)\1+$/,这个表达式用来检查一个数字是不是质数。

处理步骤:

s = '1' * your_number

如果 s 符合这个正则表达式,那就说明这个数字不是质数。如果不符合,那就是质数。

你怎么把这个正则表达式转换成 Python 的 re 模块呢?

1 个回答

6

这个代码可以直接使用(除了两边的斜杠,这在Python中是不需要的):

pattern = r'^1?$|^(11+?)\1+$'
re.match(pattern, '1'*10)    #matches
re.match(pattern, '1'*11)    #doesn't match

这里唯一需要的非标准正则表达式特性是回溯引用(\1),这个在Perl和Python中都是支持的。

撰写回答