Số hoàn thiện trong mảng

Mọi người giúp em sửa bài này với ạ. Ý tưởng của em là chạy vòng lặp for j từ 1 đến a[i], nếu j là ước của a[i] thì tính tổng s=s+j, sau đó nếu tổng s mà bằng a[i] thì nó là số hoàn thiện. Em có thử với số 6 ở vị trí đầu tiên của mảng thì nó là số hoàn thiện nhưng ở các vị trí khác trong mảng thì nó báo là không phải số hoàn thiện.

#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
	int a[100],n,i;
	//nhap so phan tu mang
	do 
	{
		printf("Nhap so phan tu cua mang : ");
		scanf("%d",&n);
	} while(n<=0);
	//nhap gia tri phan tu
	for(i=0;i<n;i++)
	{
		printf("a[%d] = ",i+1);
		scanf("%d",&a[i]);
	}
	//in mang
	printf("Mang vua nhap la : ");
	for(i=0;i<n;i++)
	{
		printf("%d ",a[i]);
	}
	//tim so hoan thien trong mang
	int dem2=0,s=0;
	printf("\nSo hoan thien trong mang la : ");
	for(i=0;i<n;i++)
	{
		for(j=1;j<a[i];j++)
		{
			if(a[i]%j==0)
			{
				s=s+j;
			}
		}
		if(s==a[i]) 
		{
			printf("%d ",a[i]);
			dem2++;
		}
	}
	if(dem2==0) printf("KHONG co so hoan thien trong mang");
	
	return 0;
}

bạn thử debug xem nhé

	int dem2=0,s=0;
	printf("\nSo hoan thien trong mang la : ");
	for(i=0;i<n;i++) // biến s có giá trị như thế nào sau mỗi vòng lặp này?
	{
		for(j=1;j<a[i];j++)
		{
			if(a[i]%j==0)
			{
				s=s+j;
			}
		}
		if(s==a[i]) 
		{
			printf("%d ",a[i]);
			dem2++;
		}
	}
2 Likes

thank bạn nhiều nhé, mình làm được rồi

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