Вводится последовательность из n целых чисел. найти максимальное совершенное число в последовательности, если таких несколько, вывести их количество (функцией оформить проверку числа: результатом функции будет 1 – число совершенное, 0 - #)

SmolentsevaMasha SmolentsevaMasha    2   28.09.2019 14:30    2

Ответы
думайй думайй  10.09.2020 19:24

using System;



//6,


//28,


//496,


//8128,


//33550336



internal class Program {


   private static void Main() {


       var max = 0L;


       var quantity = 0;



       Console.WriteLine("Введите последовательность. Для окончания введите ноль");


       do {


           var n = long.Parse(Console.ReadLine());


           if (n == 0)


               break;



           if (max == n)


               quantity++;


           else if (n > max && IsIdealNumber(n)) {


               max = n;


               quantity = 1;


           }


       } while (true);



       Console.WriteLine($"max = {max}, кол-во = {quantity}");


       Console.ReadKey();


   }



   private static bool IsIdealNumber(long number) {


       var sum = 1L;



       for (var i = 2L; i <= number / 2; i++) {


           if (number % i != 0)


               continue;


           sum += i;


           if (sum > number || number < 0)


               break;


       }


       Console.WriteLine($"number = {number}, sum = {sum}");


       return sum == number; //зачем выдумывать нолики и единички если давно придуманы буленовские переменные


   }


}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика