2016-10-20 8 views
-6

以下のメソッドを定義して、任意の整数の最小要素を返します。一番小さい要素は、1より大きい最小の数で、パラメータに2以上の値を均等に割ります。これは私のコードですが、なぜ間違っているのか分かりません。Python、ループ、反復

def first_factor(n): 
    for num in range(2,n): 
     if n % num == 0 and sqrt(n): 
      return num 
+0

ここにコードを載せてください。スクリーンショットではありません。 – piyushj

+1

問題はなんですか? – Mureinik

+0

私はなぜ間違っているのかわかりません。ありがとうございます。 – Xuan

答えて

1

あなたはない条件の一つとして、rangeに数の平方根を使用する必要があります。

def first_factor(n): 
    for num in range(2, int(n**0.5)+1): 
     if n % num == 0: 
      return num 
+0

申し訳ありませんが、このコードは正しくありません。助けてくれ、ありがとう。 – Xuan

+0

@ Xuan - どのように正しいのですか?それは私のためにうまく動作します。 – TigerhawkT3

+0

はい、なぜ私に間違っているのか分かりません。 – Xuan

1

これは、関数の定義です - あなたは、に持って、それを見るために印刷結果それを呼び出します。 完全なコードであってもよい。それは無駄であり、それは素数のために結果を与えることを防止するように、私は完全平方根を省略

def first_factor(n): 
    for num in range(2, n + 1): 
     if n % num == 0: 
      return num 

print(first_factor(3)) 

注意。