- The Modern C++ Challenge
- Marius Bancila
- 226字
- 2021-06-25 22:01:23
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);
}
- GAE編程指南
- OpenShift開發(fā)指南(原書第2版)
- Microsoft Application Virtualization Cookbook
- 簡(jiǎn)單高效LATEX
- Python從菜鳥到高手(第2版)
- Hands-On RESTful Web Services with Go
- FFmpeg入門詳解:音視頻原理及應(yīng)用
- 精通Python自然語言處理
- SQL Server與JSP動(dòng)態(tài)網(wǎng)站開發(fā)
- Android移動(dòng)開發(fā)案例教程:基于Android Studio開發(fā)環(huán)境
- Statistical Application Development with R and Python(Second Edition)
- C# and .NET Core Test Driven Development
- Java高并發(fā)編程詳解:深入理解并發(fā)核心庫
- Beginning PHP
- PHP典型模塊與項(xiàng)目實(shí)戰(zhàn)大全