私はNを見つけなければならないプログラムを書くために見つける必要がある練習を持っています! N^2で割る。
1≦N≦10^9
階乗関数を作成し、それをNのパワーに分割する簡単な方法でこれを行いたいと思っていましたが、明らかに機能しません。 n
は、prime
次いでn!
が均等n^2
で割り切れない場合 だけアルゴリズムまたは擬似コードは、任意n > 4
についてN! n^2で割り切っています
答えて
十分だろう。ここで
は私の議論を支援するための簡単な説明です:n!
後
がn
によって分割され、我々はn
によって分割する必要が分子に(n-1)!
が残されています。従ってn
またはn
の倍数を分子に入れて(n-1)!
をn
で均等に割り切れるようにする必要があります。これはn
が素数のときは決して起こりません。
n
が非プライムの場合、上記は常に発生しますが、 番号理論
ホープが助けてくれることを願います。
編集:ここに、上記の単純なPythonコードがあります。複雑さはO(sqrt(N))
です:
def checkPrime(n):
i = 2
while i<n**(1/2.0):
if n%i == 0:
return "Yes" # non-prime, so it's divisible
i = i + 1
return "No" # prime, so not divisible
def main():
n = int(raw_input())
if n==1:
print "Yes"
elif n==4:
print "No"
else:
print checkPrime(n)
main()
入力:
7
出力:これは数n > 1
があれば素数であることを述べているより簡単によりWilson's Theoremかかわらに関連している
場合によってのみ
(n-1)! = -1 (mod n)
これはのみの場合
n! = -n (mod n^2)
さらに、それが知られており、簡単に
(Wikipediaの記事を引用する)ことを証明する場合
n>1
が素数であることを言うのと代数的に等価です4の唯一の例外を除いて、3! = 6≡2(mod 4)、nが ならば(n - 1)! 0(mod n)と一致する。複合あるn
場合従って4の唯一の例外と
、(n-1)! = 0 (mod n)
したがってn! = 0 (mod n^2)
とn
が素数である場合、n! = -n = n^2-n (mod n^2)
が故にn!
、その場合に0
と合同ではありません。あなたはプライムn
ため、n!
はn^2
によって分裂時に正確にn^2-n
の残りの部分を残していることを示したい場合はウィルソンの定理の
フルパワーが必要とされています。この問題のために知る必要があるのは、ゼロではないということです。
いずれにせよ、素数チェックを実行するプログラムを書くことはできますが、それが有効な解決策とみなされるかどうかは、問題を割り当てた人が決まります。
- 1. C++ 11標準では、 "auto n2 = const_cast <int &>(n);"で "n2 is int&"を保証していますか?
- 2. 分割リストをPythonで区切って
- 3. すべての配列要素で割り切れない数
- 4. 分割文字列を複数の区切り文字で区切っていますか?
- 5. "fib"と並行して書きます:-N2は遅くなりますか?
- 6. 数字2,3,5を持ち2,3,5で割り切れるNまでの数字はいくつですか?
- 7. O(N)Complexityで3で割り切れる最長の部分配列を見つけてください。
- 8. C - Strtok()、 '\ n'の文字列を分割しますが、区切り文字はそのままです
- 9. Mallocの割り当てが間違っていますか?
- 10. 割り切れないポインタアドレスの減算
- 11. N1:N2:....:NM
- 12. 行番号Nのテキストを切り捨てます。CSS
- 13. 空の行区切りで分割します。
- 14. ランダムにm個のn個のビンを割り当てます
- 15. は$ 1で割り当てるための速記があります... $ Nルビー
- 16. 行の値を区切り文字で区切って火花データフレームを分割します
- 17. 配列で分割して単語を区切っていません
- 18. 分割区切り
- 19. "、"で区切っていますか?
- 20. 区切り文字を区切り記号で区切ってセルを区切ります
- 21. オブジェクト割り振りが狂っています
- 22. N2ログインロジックのカスタマイズ
- 23. 部分文字列をスペースで区切って区切った値を区切ります。
- 24. Wordcloudがテキストを切り取っています
- 25. awk: "\ n"で分割します
- 26. カンマ区切りの割り当てとは何ですか?
- 27. Spark Scalaデータフレームでコンマ区切り文字列を分割してn値を取得する方法は?
- 28. PHPで100で割り切れる数に切り捨てる方法は?
- 29. テーブルの列をn番目の区切り文字で新しい列に分割する方法
- 30. 文字列をUnicode区切り文字で分割していますか?
これは宿題の問題なので、これまでに試したことや、具体的にあなたが立ち往生していることを教えてください。 –
質問の「n」と「N」は同じ番号ですか? – Henry
@JohnFeminella私は階乗関数を作成し、それを 'pow(n、2) 'に分割する標準的な方法でしようとしましたが、うまくいきませんでした.Nは最大10億に達することができます –