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;
}