一个数是奇妙数,当且仅当所有小于它的约数加起来比它大,例如12除本身外的约数有1,2,3,4,6,它们的和为16,因此12是奇妙数。给定整数N,求不超过N的奇妙数有多少个。

c++实现:一个数是奇妙数,当且仅当所有小于它的约数加起来比它大,例如12除本身外的约数有1,2,3,4,6,它们的和为16,因此12是奇妙数。给定整数N,求不超过N的奇妙数有多少个。

代码实现如下,望采纳

#include <iostream>

int main() {
  int n;
  std::cin >> n;

  int cnt = 0; // 用于记录奇妙数的数量
  for (int i = 1; i <= n; i++) {
    int sum = 0; // 用于记录约数的和
    for (int j = 1; j < i; j++) {
      // 如果j是i的约数,则将j加到sum中
      if (i % j == 0) {
        sum += j;
      }
    }

    // 如果sum等于i,则i是奇妙数
    if (sum == i) {
      cnt++;
    }
  }

  std::cout << cnt << std::endl;

  return 0;
}