Bài toán

Đề 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");
  }
}