Giúp em lỗi code C tin đại cương ạ; Kiểm tra cặp số hứa hôn

#include<conio.h>
#include<stdio.h>
int sohuahon(int n1, int n2)
{
	int sum1=0,sum2=0;
	int i=1,j=1;
	for(i;i<n1/2;i++)
	{
		if(n1%i==0) sum1+=i;
	}
	for(j;j<n2/2;j++)
	{
		if(n2%j==0) sum2+=j;
	}
	printf("\n%d\n",sum1);
	printf("%d\n",sum2);
	if((sum1-1==n2)&&(sum2-1==n1)) return 1;
	else return 0;
}
int main()
{
	int M;
	printf("Nhap vao M\n");
	do
	{
		scanf("%d",&M);
		if((M<=1)||(M>=2000)) printf("Nhap M loi, NHAP LAI!\n");
		
	}
	while((M<=1)||(M>=2000));
	int N;
	printf("Nhap vao N\n");
	do
	{
		scanf("%d",&N);
		if((N<=1)||(N>=2000)) printf("Nhap N loi, NHAP LAI!\n");
	}
	while((N<=1)||(N>=2000));
	
	if(sohuahon(M,N)) printf("Hai so ban da nhap la cap so hua hon!");
	else printf("Hai so ban da nhap khong phai la cap so hua hon!");
}

Em gõ code này để check cặp số hứa hôn, nhưng dùng hàm ở số hứa hôn trả về tổng ước thì lại ra giá trị sai ạ, anh chị giúp em sửa với ạ. Em cảm ơn!

Đây là hình với 2 số hứa hôn ạ, Giá trị tổng ước đầu tiên cho ra 52 là sai ạ, em không hiểu ở chỗ này @@

số hứa hôn là số như thế nào v bạn, cho mình xin cái đề :smile:

Tổng ước của số này (trừ ước là chính nó nhé) = Số còn lại + 1, và ngược lại.

1 Like
2 Likes

2 For cho chạy đến <= n/2 thử xem.

1 Like

@@ wow … chỉ một dấu … đa tạ ạ!

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