Số Hoàn Hảo Mã: #include<iostream.h> void sohh(int n) { int i,j,s; for(i=2;i<=n;i++) { s=1; for(j=2;j<=i/2;j++) if(i%j==0) s=s+j; if(s==i) cout<<i<<endl; } } void main() { int n; cout<<"Nhap so nguyen bat ky:";cin>>n; sohh(n); } /* Vi du: ta co ket qua 28 de co duoc: i=28 luc nay j chay tu 2->14 i%j==0 thi s=s+1 nghia la: j=2, i=24 i%j thoa ->s=1+2 j=3, i=24 thoa ->s=1+2+3 j=4, i=24 thoa ->s=1+2+3+4 j=5,i=24 Khong thoa. j=6 thoa ->s=1+2+3+4+6 j=7 ko thoa j=8 thoa ->s=1+2+3+4+6+8=24 thoa nho vao dieu kien tiep theo(s==i) */ Theo khuyến cáo của TruTra các bạn nên thêm break vào sau dong cout<<i; Theo Nguồn của chip.
còn đây là bài về số hoàn hảo của mình làm bằng c: Mã: #include<conio.h> #include<stdio.h> void main() { clrscr(); int i,t,j,n; printf("Nhap so n: "); scanf("%d",&n); printf("Cac so hoan hao nho hon %d la:",n); for(i=2;i<=n;i++) { t=1; for(j=2;j<=i/2;j++) if(i%j==0) t+=j; if(t==i) printf(" %d",i); } getch(); }