Hàm check số hoàn hảo bị lỗi

Dưới đây là code check số hoàn hảo của mình, ae tìm giúp mình sai chỗ nào mà nhập số nào nó cũng báo là số hoàn hảo cả (trừ số 0) :((



source:

#include <stdio.h>
int checkperf (int x)
{
	int s = 0, i = 1;
	for ( ; i <= x; i++)
	{
		if (x % i == 0)
			s += i ;
	}
	if (s = x * 2)
		return 1;
	else
		return 0;
}
main ()
{
	int n;
	printf ("Nhap so ban muon biet lieu no co phai so hoan hao: ");
	scanf ("%d", &n);
	switch (checkperf (n))
	{
		case 1: printf ("%d la so hoan hao!", n); break;
		case 0: printf ("%d khong phai la so hoan hao!", n); break;
	}
}
1 Like

Toán tử so sánh bằng nhau trong C là gì vậy bạn?

3 Likes

:v con bug kinh điển, tks nhá

Chỉ có 2 case thì xài switch case làm gì vậy bạn :neutral_face:

style của tôi ông à :v

Lỗi rất cơ bản nên mình close topic tại đây.

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