Exemple #1
0
int
main(int argc, char *argv[])
{
	i32 Sum = 0;

	for (i32 N = 1; N < 10000; N += 1)
	{
		i32 D1 = DivisorSum(N);

		if (D1 != N && DivisorSum(D1) == N)
		{
			printf("pair: %d, %d\n", N, D1);

			Sum += N;
		}
	}

	printf("%d\n", Sum);

	return(0);
}
void NonAbundantSums()
{
  auto result = 0;
  std::vector<bool> nums(28124, true);
  std::vector<int> ab_nums;
  for (auto i = 2; i < 28124; ++i) {
    if (i < DivisorSum(i)) ab_nums.push_back(i);
  }  // i
  for (auto i = 0u; i < ab_nums.size(); ++i) {
    for (auto j = i; j < ab_nums.size(); ++j) {
      auto temp = ab_nums[i] + ab_nums[j];
      if (temp < 28124) nums[temp] = false;
    }  // j
  }  // i
  for (auto i = 0u; i < nums.size(); ++i) {
    if (nums[i]) result += i;
  }  // i
  std::cout << result << std::endl;
}