Tại sao code này chạy quá lâu?

TheNumber = 600851475143
TheFactor = 1
TheRemain = 0
TheBiggest = 0
while TheFactor < 600851475143:
    TheRemain = TheNumber%TheFactor
    if TheRemain == 0:
        TheBiggest = TheFactor
    elif TheRemain != 0:
        TheBiggest = TheBiggest
    TheFactor += 1

print(TheBiggest)    

Tại sao khi bỏ vào python cái này nó không cho output ạ? Đấy là do máy yếu, hay là do lỗi lặp vô hạn ạ?
Mong các cao nhân chỉ giúp.

python thì chú ý copy code đúng format nhé. Bạn sửa lại bài sớm thì mới có người chỉnh sửa hộ bạn được

4 Likes

nó không hỗ trợ phím tab ạ. em thử dấu cách rồi mà vẫn chưa được

2 Likes

Đừng dùng kí tự tab \t để indent code. (Nút tab đổi ra space thì được :smiley: )

3 Likes

bỏ code vào cặp ba dấu ``` nhé

2 Likes

K phải lỗi lặp vô hạn tuy nhiên do máy bạn không đủ nhanh để có thể tính toán được nên chậm thôi. Thật ra đa số máy các ae trên đây chạy đoạn code trên cũng treo

3 Likes

Lặp 600 tỉ lần mà còn Python thì vậy phải rồi :slight_smile:

Tìm ước như bạn thì cứ trả về số đã nhập chứ còn gì nữa.

4 Likes

Bạn chờ lâu không?
Nếu chỉ vài phút thì nó chạy chưa xong đâu. Thử chạy đoạn mã đó rồi để đó đi làm gì lâu lâu (như ngủ chẳng hạn) rồi quay lại xem nó có kết quả chưa. :smiling_imp:

Hơn 600 tỷ lần lặp với Python. :cold_face:

4 Likes

Điều kiện vòng lặp While của bạn là "cứ chạy cho tới khi nào “TheFactor” bằng 6 tỷ thì mới được ngưng.
Mà TheFactor hiện mới bằng 1 thôi, và mỗi lần nó chỉ +1

Nghĩa là cái while của bạn phải chạy 6 tỷ lần
Bạn chỉ cần kiên nhẫn xíu, nấu n tô mỳ ngồi ăn và chờ nó chạy xong là được thôi mà.

3 Likes

Tính sương sương máy tính chạy hết 10^8 phép tính trên 2s (với Python do Python chậm :cold_face:). Ở đây n cỡ 600 tỷ = 6*10^11 là chạy 12000s = 3h20’. Cỡ thời gian đó bạn đi ngủ một giấc còn nhanh hơn :v

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?