2016-11-18 4 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

'if n + 1 == x'は、現在の番号nが目標番号xより1だけ小さいかどうかを単にチェックします。 'x'の直前の数字までずっと進んでいれば(実際にそれほど遠くなくても、最適化がたくさんあります)、' x'は素数以外の何かになりますか? OPがそのブロックのポイントが何であるか尋ねない限り、 – jonrsharpe

+0

@jonrsharpe?私はそれを単に取り除くことができたと思います。代わりに 'for'の後に' true True'を書いてください。 –

+0

@JonClementsええ、プライムチェックアートの素​​晴らしい例ではありません! – jonrsharpe

答えて

1

素数は、1と「自己」を除数として持つ整数です。これは、以下のような簡単な方法で解決できます。私たちはpandas 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 
関連する問題