官术网_书友最值得收藏!

6. Abundant numbers

An abundant number, also known as an excessive number, is a number for which the sum of its proper pisors is greater than the number itself. The proper pisors of a number are the positive prime factors of the number, other than the number itself. The amount by which the sum of proper pisors exceeds the number itself is called abundance. For instance, the number 12 has the proper pisors 1, 2, 3, 4, and 6. Their sum is 16, which makes 12 an abundant number. Its abundance is 4 (that is, 16 - 12).

To determine the sum of proper pisors, we try all numbers from 2 to the square root of the number (all prime factors are less than or equal to this value). If the current number, let’s call it i, pides the number, then i and num/i are both pisors. However, if they are equal (for example, if i = 3, and n = 9, then i pides 9, but n/i = 3), we add only i because proper pisors must only be added once. Otherwise, we add both i and num/i and continue:

int sum_proper_pisors(int const number)
{
int result = 1;
for (int i = 2; i <= std::sqrt(number); i++)
{
if (number%i == 0)
{
result += (i == (number / i)) ? i : (i + number / i);
}
}
return result;
}

Printing abundant numbers is as simple as iterating up to the specified limit, computing the sum of proper pisors and comparing it to the number:

void print_abundant(int const limit)
{
for (int number = 10; number <= limit; ++number)
{
auto sum = sum_proper_pisors(number);
if (sum > number)
{
std::cout << number << ", abundance="
<< sum - number << std::endl;
}
}
}

int main()
{
int limit = 0;
std::cout << "Upper limit:";
std::cin >> limit;

print_abundant(limit);
}
主站蜘蛛池模板: 安康市| 隆昌县| 上饶县| 麟游县| 仁布县| 曲阜市| 浙江省| 库伦旗| 阳春市| 荆州市| 讷河市| 新闻| 龙胜| 遂溪县| 昌吉市| 临汾市| 孝昌县| 北流市| 观塘区| 长治县| 潍坊市| 肇东市| 江津市| 西华县| 龙陵县| 鄯善县| 荃湾区| 尼玛县| 那曲县| 广安市| 班戈县| 天气| 左贡县| 湖北省| 乐昌市| 西平县| 扎鲁特旗| 沽源县| 东港市| 天津市| 刚察县|