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

Ответы на вопрос

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; //зачем выдумывать нолики и единички если давно придуманы буленовские переменные
}
}




Для решения этой задачи вам потребуется написать функцию для проверки числа на совершенность и затем осуществить поиск максимального совершенного числа в последовательности. Вот пример кода на C#:
csharpusing System;
class Program
{
// Функция для проверки числа на совершенность
static int IsPerfectNumber(int num)
{
int sum = 1; // Начинаем сумму с 1, потому что 1 всегда делит число нацело
for (int i = 2; i * i <= num; i++)
{
if (num % i == 0)
{
sum += i;
if (i * i != num) // Если число не является квадратом i, добавляем еще один делитель
{
sum += num / i;
}
}
}
return (sum == num) ? 1 : 0; // Возвращаем 1, если число совершенное, и 0 в противном случае
}
static void Main(string[] args)
{
Console.Write("Введите количество чисел N: ");
int N = int.Parse(Console.ReadLine());
int[] sequence = new int[N];
for (int i = 0; i < N; i++)
{
Console.Write($"Введите число {i + 1}: ");
sequence[i] = int.Parse(Console.ReadLine());
}
int maxPerfectNumber = int.MinValue;
int countPerfectNumbers = 0;
foreach (int num in sequence)
{
if (IsPerfectNumber(num) == 1)
{
if (num > maxPerfectNumber)
{
maxPerfectNumber = num;
countPerfectNumbers = 1;
}
else if (num == maxPerfectNumber)
{
countPerfectNumbers++;
}
}
}
if (maxPerfectNumber != int.MinValue)
{
Console.WriteLine($"Максимальное совершенное число: {maxPerfectNumber}");
Console.WriteLine($"Количество совершенных чисел: {countPerfectNumbers}");
}
else
{
Console.WriteLine("В последовательности нет совершенных чисел.");
}
}
}
В данном коде мы сначала создаем функцию IsPerfectNumber
, которая проверяет, является ли число совершенным. Затем в Main
мы вводим последовательность чисел и находим максимальное совершенное число, а также подсчитываем количество совершенных чисел в последовательности. Результат выводится на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili