Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool checkPerfectNumber(int num) {
- // Совершенное число должно быть положительным
- if (num <= 1) return false;
- int sumOfDivisors = 0;
- // Проверяем только до квадратного корня
- // Так как делители ходят парами (1 * 28), (2 * 14), (4 * 7)
- for (int divisor = 1; divisor * divisor <= num; divisor++) {
- if (num % divisor == 0) {
- // Нашли первый делитель
- sumOfDivisors += divisor;
- // Находим парный делитель
- int pairedDivisor = num / divisor;
- // Добавляем парный делитель, если:
- // 1. Это не тот же делитель (для квадратов)
- // 2. Это не само число
- if (pairedDivisor != divisor && pairedDivisor != num) {
- sumOfDivisors += pairedDivisor;
- }
- }
- }
- // Проверяем, равна ли сумма делителей самому числу
- return sumOfDivisors == num;
- }
Advertisement
Add Comment
Please, Sign In to add comment