Нужна помощь в понимании строки № 9 функции is_prime; Есть ли более простой способ для функции?
Как строка № 9(если n + 1 == x) имеет отношение к проверке, является ли число простым?
Есть ли более простой способ построить эту функцию?
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
1 ответ
Решение
Простое число - это целое число, имеющее только 1 и "я" в качестве делителей. Вот аналогичное решение, которому может быть легче следовать. Мы используем DataFrame от pandas и связанную с ним функцию '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