Đề bài là in ra các số hoàn thiện từ 1 đến n (n nhập vào ), lúc mình code xong chạy ctrinh, mình nhập vào số 6 rồi enter thì chương trình ko in ra gì cả mà chỉ có con trỏ nhấp nháy mãi, không enter đc, cho mình hỏi mình code sai chỗ nào ?
Giải bài tập pascal giúp mình!
Bạn cho cái vòng while nhỏ công với m := m + 1; vào trong một khối begin-end đi xem nào?
Mà thực ra mình cũng chưa hiểu thuật toán của bạn là gì 
Số hoàn hảo là như nào hả bạn 
Thêm nữa là bạn nên dùng FreePascal, mình nghĩ vậy, và sử dụng trình soạn thảo hay IDE khác để thuận tiện hơn. Code trên nền DOS kiểu này mệt và khó nhìn lắm.
Bạn quên khởi tạo lại i sau khi m thay đổi và ném biến tong ra ngoài vòng while i<m nhé. Trước dòng while i < m thì bạn thêm i := 1 vào.
À mà nhắc bạn luôn là nếu viết được for thì cứ viết for để debug cho dễ. Chứ viết while thì khó debug lắm. Chỉ viết while khi mình không chắc chắn về điều kiện dừng của vòng lặp thôi.
Cộng ước lại nếu bằng đúng số đó thì là nó. Dùng bảng tra là nhanh nhất vì có mấy số thôi. Nếu muốn thành bài thì đề phải là tính ước.
@thớt: thôi viết lại từ đầu vậy, nhìn vầy rối lắm, nếu kêu chỉ lỗi thì mình chỉ vậy thôi.
Thử cách này đi, chắc đọc dễ hiểu hơn
# python3.6
# python source-code.py <num>
import math
import sys
num=int(sys.argv[1])
sum=0;
for i in range(1,int(math.sqrt(num))+1): # cho biến chạy từ 1 đến căn bậc 2 của số.
if (num%i==0):
sum+=i # cộng ước.
sum+=int(num/i) # cộng ước.
if (sum==num*2): print("Perfect!") # vì tổng ước của số hoàn hảo luôn gấp đôi số đó.
else: print("Not Perfect.")
Bạn để cái Tong :=0 ra ngoài vòng while do thứ 2 là được =)))
thanks all đã giải đc :)))

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