Tôi biết cách thông thường để tìm ra giai thừa n-1 lặp đi lặp lại và sau đó kiểm tra. Nhưng điều đó có độ phức tạp của O (n) và mất quá nhiều thời gian cho n lớn. Có cách nào khác không?Có cách nào nhanh chóng để tìm nếu (n-1)! chia hết cho n?
9
A
Trả lời
15
Có: nếu n
là số nguyên tố, rõ ràng là (n-1)!
không chia hết cho số n
.
Nếu n
không là số nguyên tố và có thể được viết như n = a * b
với a != b
sau đó (n-1)!
là chia hết cho n
vì nó chứa a
và b
.
Nếu n = 4
, (n-1)!
là không chia hết cho n
, nhưng nếu n = a * a
với a
là một số nguyên tố> 2, (n-1)!
là chia hết cho n
bởi vì chúng tôi tìm a
và 2a
trong (n-1)!
(nhờ Juhana trong ý kiến).
để tìm giá trị n là số nguyên tố, tôi có phải lặp lại từ 1 đến n không? – batman
@learner nope, chỉ từ 2 đến 'tầng (sqrt (n))'. –
Một phương pháp ngây thơ sẽ là kiểm tra các số từ 1 đến 'sqrt (n)' (và không phải 'n') để xem chúng có phải là ước của' n', nhưng đó là một câu hỏi khác (http://stackoverflow.com/questions)/2586596/nhanh nhất-algorithm-for-primality-test). – alestanis