Mấy anh chị cho e hỏi hướng làm nhanh nhất được không ạ, tuy e làm đúng code python nhưng chạy chậm quá , em nghĩ các kiểu để optimize nhưng vẫn ko được ạ.
Liệt kê tất cả các ước của một số nguyên dương
post code lên cho mn xem b
đây ạ bài này em làm hướng đơn giản nhưng muốn tối ưu thì e ko bt phải làm sao ạ
em cũng tính là chạy đến căn 2 của n rồi nhưng bước triển khai code thì em bí
liệt kê tất cả các ước thì làm vậy đúng rồi, Tối ưu cái gì nữa…
do 1 phải chạy code trong 1s á anh. Nếu mình nhập số nhỏ hơn n^10 thì chạy ổn
nhưng nếu từ n^10 trở lên sẽ bị treo máy ạ. Ví dụ n =100000000000, thì ct phải chạy tới 100000000000 lần gây ra hiện tượng treo máy, em muốn tối ưu nó n =100000000000 nhưng số lần chạy giảm xuống ko gây treo máy ạ
chỉ chạy tới căn bậc 2 của n thôi, mỗi lần chia hết là mình được 2 số
i và n//i
ví dụ 100 thì chỉ chạy tới 10 được rồi
chia hết cho 5 thì in ra hai số 5 và 20 (100//5)
e cx nghĩ ra thế ạ nhưng bước triển code thì…
thì sao? có khó khăn gì?
Output có cần phải từ 1 đến n? Nếu vậy thì dùng 1 list lưu từ 1 đến sqrt(n)
Nếu n chẵn thì lấy n /2 sẽ đc ước số lớn nhất của n, vì 2 là số chia bé nhất. Rồi cho code chạy từ 3 đến n/2 thôi.
Nhu vậy là optimize nhanh gấp 2 rồi.
Nhìn vào phép chia sẽ thấy a = b/c, giống như hai đứa trẻ chơi bập bênh. b càng lớn thì c càng nhỏ và ngược lại.