Chương trình kiểm tra số hoàn hảo C/C++
Đề bài: Viết chương trình kiểm tra số nguyên dương n có phải là một số hoàn hảo (perfect number) hay không. Biết số hoàn hảo là số nguyên dương, bằng tổng các ước số thực sự của nó (ví dụ: 28 = 14 + 7 + 4 + 2 + 1).
Enter number: 28
true
Hướng dẫn giải
Ý tưởng của bài toán này là ta sẽ dùng một vòng for
để duyệt lần lượt từ 1
đến n / 2
, sau đó sẽ tính tổng các ước số của n
. Giả sử tổng các ước số là sum
thì số n
sẽ là số hoàn hảo khi biểu thức sum == n
trả về true
.
Ta có thể dùng biểu thức n % i == 0
để kiểm tra xem i
có phải là ước của n hay không.
int sum = 0;
for (int i = 1; i <= number / 2; i++)
{
if (number % i == 0)
{
sum += i;
}
}
Code
Dưới đây là source code bạn có thể tham khảo
#include <stdio.h>
int main()
{
int number;
printf("Enter number: ");
scanf("%d", &number);
int sum = 0;
for (int i = 1; i <= number / 2; i++)
{
if (number % i == 0)
{
sum += i;
}
}
if (sum == number)
{
printf("true\n");
}
else
{
printf("false\n");
}
}