Conosco il solito modo di trovare iterativamente n-1 in modo iterativo e poi di controllare. Ma questo ha una complessità di O (n) e richiede troppo tempo per il grande n. C'è un'alternativa?C'è un modo rapido per scoprire se (n-1)! è divisibile per n?
9
A
risposta
15
Sì, c'è: se n
è un numero primo, ovviamente (n-1)!
non è divisibile per n
.
Se n
non è un numero primo e può essere scritta come n = a * b
con a != b
poi (n-1)!
è divisibile per n
perché contiene a
e b
.
Se n = 4
, (n-1)!
non è divisibile per n
, ma se n = a * a
con a
essere un numero primo> 2, (n-1)!
è divisibile per n
perché troviamo a
e 2a
in (n-1)!
(grazie alla Juhana nei commenti).
Problemi correlati
- 1. C'è un modo per scoprire se un thread è bloccato?
- 2. Un modo più rapido per scoprire se un utente esiste su un sistema?
- 3. verifica se un numero è divisibile per 6 PHP
- 4. Come si controlla se un numero è divisibile per un altro numero (Python)?
- 5. Elemento non contiguo divisibile per n soluzione non funzionante
- 6. Un modo rapido per determinare se esiste una PID (Windows)?
- 7. arrotondamento un numero in modo che sia divisibile per 5
- 8. Il modo migliore per scoprire se l'elemento è un discendente di un altro
- 9. Qual è un modo rapido per verificare se esiste un file?
- 10. Python: un modo rapido per sommare i prodotti esterni?
- 11. Qual è il modo più semplice/veloce per scoprire quando è stato creato un ramo git?
- 12. C'è un modo per scoprire se XCUIElement è attivo o no?
- 13. C'è un modo per scoprire se A è una sottomatrice di B?
- 14. Esiste un modo programmatico per scoprire se la mia app è stata valutata?
- 15. Come verificare se il numero è divisibile per un certo numero?
- 16. modo rapido per verificare se un array di caratteri è zero
- 17. Modo rapido per verificare se un server è accessibile dalla rete in C#
- 18. C'è un modo rapido per verificare se QUALSIASI colonna è NULL?
- 19. scoprire se un oggetto C++ è richiamabile
- 20. Devo controllare LSRequiresIPhoneOS per scoprire se la telecamera è disponibile?
- 21. c'è un modo per scoprire da dove proviene un ramo?
- 22. modo rapido per modificare la linea n-esima di output del comando precedente
- 23. Qual è il modo più rapido per moltiplicare più celle per un altro numero?
- 24. modo più rapido per generare bit casuali
- 25. Un modo rapido per determinare se un componente viene trovato in JPanel
- 26. Modo rapido per decodificare l'immagine JPEG
- 27. C#, modo rapido per invertire un bool nullable?
- 28. Per scoprire se un div ha una barra di scorrimento
- 29. modo più rapido per determinare se un elemento si trova in un array ordinato
- 30. scoprire se una è una potenza di b
per trovarlo n è primo, non dovrò iterare da 1 a n? – batman
@learner nope, solo da 2 a 'floor (sqrt (n))'. –
Un metodo ingenuo sarebbe quello di provare i numeri tra 1 e 'sqrt (n)' (e non 'n') per vedere se sono divisori di' n', ma questa è un'altra domanda (http://stackoverflow.com/questions/2586596/più veloce algoritmo-per-primalità-test). – alestanis