Code:
// Tinh uoc
#include <stdio.h>
#include <conio.h>
#define MAX 100
void main()
{
int sum=0,dem,so,j;
int uoc[MAX];
char ch;
do
{
printf("\nMoi ban nhap vao so bat ki de tinh cac uoc cua so do: ");
fflush(stdin);
scanf("%d",&so);
for(int i=1,j=0;i<=(so/2),j<=(so/2);j++,i++)
if((so % i) == 0)
{
//printf("\n%d",i);
uoc[j] = i;
printf("%4d",uoc[j]);
sum = sum + uoc[j];
}
if (sum == so)
printf("\nSo ban vua nhap la so hoan hao.");
else
printf("\nSo ban vua nhap khong la so hoan hao.");
fflush(stdin);
printf("\nBan co muon kiem tra so khac khong? (Y/N)");
ch = getchar();
}
while (ch == 'y' || ch == 'Y');
}
Làm thế này thì đúng rồi nhưng đến lần chạy thứ 2 nó báo kq sai, Vdu như nhập lần 1 là 6, thì báo đúng số các nghiệm và là số hoàn hảo, nhưng lần chạy thứ 2 cũng nhập 6 nhưng mà nó báo ko phải là số hoàn hảo, thế là thế nào nhỉ?