2016-11-18 5 views
0

라인 # 9 (n + 1 == x 인 경우)가 소수인지 확인하는 것과 어떻게 관련이 있습니까?is_prime 함수의 9 행을 이해하는 데 도움이 필요합니다. 거기에 기능을위한 간단한 방법은 무엇입니까?

이 기능을 구현하는 간단한 방법이 있습니까?

def is_prime(x): 
     if x == 2: 
      return True 
     elif x > 2: 
      for n in range(2, x): 
       if x % n == 0: 
        return False 
       else: 
        if n + 1 == x: 
         return True 
     else: 
      return False 
+0

'n + 1 == x 인 경우 '는 단순히 현재 숫자'n '이 목표 숫자'x '보다 하나 적은지 확인합니다. 'x' 바로 앞에있는 숫자에 이르기까지 숫자를 찾지 못했다면 (실제로는 그다지, 많은 최적화가 있습니다.)'x'는 소수 이외의 다른 것이 될 수 있습니까? OP가 그 블록의 요점을 묻지 않는 한 – jonrsharpe

+0

@jonrsharpe? 나는 그것을 그냥 제거하고'true'를 대신 할 수 있다고 생각합니다. 대신에'for' 다음에 오히려 이상한 체크 대신에'True'를 리턴 할 수 있습니다. –

+0

@JonClements 예, 그것은 최고의 체크 아트의 좋은 예가 아닙니다! – jonrsharpe

답변

1

소수는 1이며 'self'가 약수 인 정수입니다. 여기에 따라야 할 비슷한 해결책이 있습니다. 우리는 팬더 DataFrame을 사용하고 관련 '적용'기능을 사용합니다. 'print df'줄을 표시하지 않고 출력을 원하는대로 수정하십시오. 재밌게 지내세요

""" 
Created on Fri Nov 18 13:32:08 2016 
@author: Soya 
""" 

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from pandas import DataFrame, Series 


def isprime(x): 
    vals = range(2,x/2) 
    df = DataFrame([vals]).T 
    df['1'] = df.apply(lambda y: x%y) 
    print df 
    print '' 
    if df['1'].prod() != 0: 
     print 'PRIME' 

isprime(17) 
    0 1 
0 2 1 
1 3 2 
2 4 1 
3 5 2 
4 6 5 
5 7 3 

PRIME