01/10/2018, 11:55

Hàm kiểm tra số hoàn chỉnh, nó sai chỗ nào ạ?

int So_hoanchinh(int a)
{
	int i;
	int s = 0;
	for (i = 1; i <= (a - 1); i++)
	{
		if (a%i == 0)
			s += i;
	}
	if (s == a)
		return 1;

}
sycoi001 viết 14:00 ngày 01/10/2018

Số hoàn thiện theo giải thuật Euclide thì nó là số có tổng ước số bằng chính nó.
Ước số thì tính thế nào, ta lấy chính nó chia cho i, với i chạy từ 1 đến n-1(vì ko cộng chính nó vào ước số nên sẽ là n-1).
Sau khi có ước số, tính tổng ước số, nếu tổng = n. Suy ra nó là số hoàn thiện.
Bạn làm chưa đủ đk để return 0(false).

sycoi001 viết 14:03 ngày 01/10/2018

Bạn thêm dòng else return 0; là xong đó;

Xong gọi hàm if so sánh 0, 1 ở hàm main rồi kết luận, 1 là sht, 0 thì ko phải.

Bài liên quan
0