2010-02-08 3 views
9

this article을 읽었습니다. 여기서 /^1?$|^(11+?)\1+$/ 펄 정규식을 사용하여 숫자가 소수인지 테스트합니다.Python에서 regex를 통한 Is_prime 함수 (perl에서)

프로세스 : s는 정규식을 matchs 경우

s = '1' * your_number 

, 그것은 소수 아니다. 그렇지 않으면, 그것은 소수입니다.

어떻게 정규 표현식을 파이썬의 re 모듈로 변환하겠습니까?

+13

내가 모든 것을 보았을 때 ... –

+0

좀 더 압축 된 소수 테스트가 끝났습니다. http://stackoverflow.com/questions/1805796/code-golf-ulam-spiral'all (i % d d 범위 (2, i))' –

+3

@Mike 역 참조와 일치하는 정규식은 NP 하드입니다. http://perl.plover.com/NPC/ –

답변

6

이 (파이썬에서 필요하지 않은 가장자리에서 슬래시없이 제외)와 같이 작동합니다

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

여기에 필요한 유일한 표준이 아닌 정규식 기능은 역 참조 (\1),이 지원됩니다 Perl과 Python에서.

+0

감사합니다, 나는 원시의 r을 잊었 기 때문에 문제가 발생했습니다 –

+1

사람이 왜 삭제 된 답변을 설명 할 수 있습니까? http://stackoverflow.com/questions/2225027/is-prime-function-via-regex-in-python-from- perl/2225069 # 2225069 잘못 되었기 때문에 잘못되었다는 가정하에 잘못된 것입니까? – ysth

+0

나는 그것을 보았다. 그것은 틀리지 않았습니다. –

관련 문제