v_yanushkovsky

#507 Perfect Number

Jul 24th, 2026
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1.         bool checkPerfectNumber(int num) {
  2.         // Совершенное число должно быть положительным
  3.         if (num <= 1) return false;
  4.        
  5.         int sumOfDivisors = 0;
  6.        
  7.         // Проверяем только до квадратного корня
  8.         // Так как делители ходят парами (1 * 28), (2 * 14), (4 * 7)
  9.         for (int divisor = 1; divisor * divisor <= num; divisor++) {
  10.             if (num % divisor == 0) {
  11.                 // Нашли первый делитель
  12.                 sumOfDivisors += divisor;
  13.                
  14.                 // Находим парный делитель
  15.                 int pairedDivisor = num / divisor;
  16.                
  17.                 // Добавляем парный делитель, если:
  18.                 // 1. Это не тот же делитель (для квадратов)
  19.                 // 2. Это не само число
  20.                 if (pairedDivisor != divisor && pairedDivisor != num) {
  21.                     sumOfDivisors += pairedDivisor;
  22.                 }
  23.             }
  24.         }
  25.        
  26.         // Проверяем, равна ли сумма делителей самому числу
  27.         return sumOfDivisors == num;
  28.     }
Advertisement
Add Comment
Please, Sign In to add comment