01/10/2018, 08:31

Giải bài tập pascal giúp mình!

Đề 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 ?

Trần Hoàn viết 10:35 ngày 01/10/2018

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ì

Quang Minh viết 10:44 ngày 01/10/2018

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.

HK boy viết 10:38 ngày 01/10/2018

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.

rogp10 viết 10:45 ngày 01/10/2018

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.

Trần Huy viết 10:46 ngày 01/10/2018

Quang Minh viết 10:31 ngày 01/10/2018

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.")
Nguyễn Quốc Khánh viết 10:45 ngày 01/10/2018

Bạn để cái Tong :=0 ra ngoài vòng while do thứ 2 là được =)))

viết 10:34 ngày 01/10/2018

thanks all đã giải đc :)))

Bài liên quan
0