2016-11-18 13 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'小1。如果你一直到'x'之前的数字都没有找到一个能够分成数字的数字(实际上甚至没有那么远,有很多优化),'x'怎么能是除了素数之外的任何东西? – jonrsharpe

+0

@jonrsharpe除非OP询问那个块有什么意义?我想可以直接删除它,并在'for'后面直接输入'True',而不是那个奇怪的检查... –

+0

@JonClements是的,它不是检查艺术的主要例子! – jonrsharpe

回答

1

素数是一个只有1和'self'作为除数的整数。这是一个类似的解决方案,可能更容易遵循。我们使用一个熊猫DataFrame并且它与相关的'apply'函数相关联。禁止“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 
相关问题