Yinelemeli olarak n-1 faktoriyelini bulmanın alışılmış yolunu biliyorum ve sonra kontrol ediyorum. Ancak bu, O (n) 'nin karmaşıklığına sahiptir ve büyük n için çok zaman alır. Alternatif var mı?(n-1) 'i bulmanın hızlı bir yolu var mı? n tarafından bölünebilir mi?
9
A
cevap
15
Evet var: n
bir öncelikli ise,n
tarafından bölünemez. o a
ve b
içerdiğinden n
bir asal değildir ve a != b
ile n = a * b
olarak yazılabilir Eğer
sonra (n-1)!
n
ile bölünebilir.
n = 4
ise (n-1)!
n
bölünebilir değil, ama a
ile n = a * a
bir asal sayı> 2 olmak eğer biz (yorumlarda Juhana sayesinde) a
ve 2a
(n-1)!
bulmak çünkü (n-1)!
n
bölünemeyen bir.
İlgili konular
- 1. Bitişik olmayan öğe tarafından bölünebilir n çözümlenmiyor
- 2. Listede bir öğeyi bulmanın en hızlı yolu?
- 3. Neo4j: bir düğüm bulmanın en hızlı yolu: id işlevine mi yoksa dizine mi?
- 4. MVC'de kullanılmayan görünümleri bulmanın otomatik bir yolu var mı?
- 5. Yinelenen yinelemede yinelenen yineleme sayısını bulmanın bir yolu var mı?
- 6. Emacs'de tuşları çözmenin hızlı bir yolu var mı?
- 7. Diziler arasındaki eşleşme sayısını bulmanın en hızlı yolu nedir?
- 8. UID tarafından AppleScript kullanarak bir takvim etkinliği aramanın daha hızlı bir yolu var mı?
- 9. Oracle'da materyalize bir görünüm hızlı yenileme tarafından yapılan değişiklikleri sorgulamanın bir yolu var mı?
- 10. PHP'de kullanıcı tarafından bildirilen değişkenleri almanın bir yolu var mı?
- 11. x = (y/n) + (y% n? 1: 0) hesaplamanın daha zarif bir yolu var mı?
- 12. R'de bir matrisin Satır/Sütun boşluklarını bulmanın bir yolu var mı?
- 13. Farenin altındaki kontrolü almanın hızlı bir yolu var mı?
- 14. Cygwin'de Python 3.5'i kullanmanın bir yolu var mı?
- 15. Python'da özdeğerleri/vektörleri bulmanın en hızlı yolu nedir?
- 16. Hızlı yolu
- 17. Hafızayı sınırlamanın bir yolu var mı?
- 18. Rcov'da, hangi test yönteminin test edilen belirli bir kod satırını geçtiğini bulmanın bir yolu var mı?
- 19. Bir adres için en yakın çapraz sokakları bulmanın bir yolu var mı?
- 20. İlişkili olmayan iki tablo arasında yabancı anahtarlar arasında bir ilişki bulmanın bir yolu var mı?
- 21. TFS'de belirli bir dalın oluşturulduğu kaynak değişikliklerini bulmanın bir yolu var mı?
- 22. Java'da bir şablon (jenerik) parametresinin türünü bulmanın bir yolu var mı?
- 23. OCaml: N1'ler listesi nasıl oluşturulur
- 24. Embperl 2.x ile uyumlu olmayan Embperl 1.x sözdizimini bulmanın otomatik bir yolu var mı?
- 25. numpy svd: tam svd yapmak yerine sadece ilk tekil vektörleri bulmanın bir yolu var mı?
- 26. Dairesel yapıyı JSON'a dönüştürme - Hangi alanda şikayette bulunduğunu bulmanın herhangi bir yolu var mı?
- 27. TensorFlow baskılarını bastırmanın bir yolu var mı?
- 28. ImageMagick'den daha hızlı bir şey var mı?
- 29. İyi bir Vim regexp OR komutu var mı? Başka bir şey yoksa uyumsuzluğu bulmanın en iyi yolu nedir?
- 30. Hızlı yolu
n'yi en baştan bulmak için, 1'den n'ye kadar yinelemem gerekmeyecek mi? – batman
@ nearner nope, yalnızca 2'den 'zemine (sqrt (n))'. –
Naif bir yöntem, n'lerin bölenleri olup olmadığını görmek için 1 ile sqrt (n) 'arasında (ve n değil) sayıları test etmek olabilir, ancak bu başka bir soru (http://stackoverflow.com/questions)/2586596/en-algoritma için-asallık-testi). – alestanis