Số hoàn thiện là các số nguyên dương n sao cho:
- n = s(n),
trong đó, s(n) là hàm tổng giới hạn các ước của n (nghĩa là tổng các ước chính thức của n), hoặc:
- σ(n) = 2n,
trong đó, σ(n) là hàm tổng các ước của n (nghĩa là tổng các ước của n, bao gồm cả n).
Euclid đã khám phá ra 4 số hoàn thiện nhỏ nhất dưới dạng: 2n−1(2n − 1):
- khi n = 2: 21(22 − 1) = 6
- khi n = 3: 22(23 − 1) = 28
- khi n = 5: 24(25 − 1) = 496
- khi n = 7: 26(27 − 1) = 8128.
#include<stdio.h>
bool soHoanHao(int n)
{
int tongUoc = 0;
for(int i=1;i<n;i++)
{
if(n%i==0) tongUoc = tongUoc+i;
}
if(tongUoc == n) return true;
else return false;
}
int main()
{
int n;
printf("Nhap n:");
scanf("%d",&n);
if(soHoanHao(n)==true) printf("%d la so hoan hao!",n);
else printf("%d khong phai la so hoan hao!",n);
return 0;
}
để hiểu biết thêm các bạn truy cập:http://hocccoban.org/2014/12/07/cc-cach-tim-so-hoan-hao.html
Code e như này có được ko ạ,e coi số hoàn hảo là tổng các ước nhỏ hơn số đó thì là số hoàn hảo ví dụ số 6
ReplyDelete#include
#include
int main()
{
int i,a,s;
printf("Nhap vao so :");
scanf("%d",&a);
s=0;
for(i=2;i<a;i++)
{
if(a%i==0)
s=s+1;
}
if(s<a)
{
printf("%d la so hoan thien",a);
}
else
printf("%d La so khong hoan thien ",a);
return 0;
}