Нужна помощь в задаче(делители чисел) - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток,есть такая задача(совсем недавно начал изучать C#) так что сильно не пинайте))если какаю-то чушь напишу) Задача: Найти натуральное число из интервала от а до b, у которого количество делителей максимально. Если таких чисел несколько, то должно быть найдено минимальное (максимальное) из них.А и В может быть как введенно с клавиатуры так и присвоенно в коде программы,для удобства я сразу присвоил Метод решения таков,перебираем все нат. числа от А до В,в каждом числе ищем количество делителей и заносим это количество например в массив(1 элемент которого делители 1 числа) ну и потом сравниваем элементы массива находим наибольший и по индексу узнаем какое это было число и его выводим.(может алгоритм сильно запутан и таких сложностей ненадо...) вот набросок
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            int a = 10;
            int b = 25;
            int i=a;
            int k,c; int max = 0;
            int[] m = new int[100];
            for (i=a; i <= b;i++);   // перебор чисел от А до В
            {
                  for (k = 1; k <= i; k++) ; // находим кол-во делителей каждого числа
                  {
                      if (i % k == 0) ;
                      { m[i]++;}  // записываем кол-во делителей в массив
                  }
                if (m[i] > max);  // сравниваем элементы массива
                {max = m[i];
                 c = i;}  // записываем индекс наибольшего значения
 
            }
 
            Console.WriteLine(c);
            Console.ReadKey();

        }
    }
}

Решение задачи: «Нужна помощь в задаче(делители чисел)»

textual
Листинг программы
using System;
 
namespace test2{
    
    class Numbers{
        public int Number;
        public int Factors;
        public Numbers(int n, int f){
            Number = n;
            Factors = f;
        }
    }
    
    class Program
    {
        public static void Main(string[] args)
        {
            int A = 10, B = 100;
            int count;
            Numbers[] nums = new Numbers[100];
            int index = 0;
            
            for(int i = A; i <= B; i++){
                count = 0;
                for(int j = 2; j <= i/2; j++){
                    if(i%j == 0) count++;   
                }
                nums[index] = new Numbers(i, count);
                index++;
            }
            
            for(int i = 0; i < index; i++)
                Console.WriteLine("Число " + nums[i].Number + " делителей: " + nums[i].Factors);
            Console.WriteLine();
            
            Numbers max = new Numbers(0,0);
 
            for(int i = 0; i < index; i++){
                if(nums[i].Factors > max.Factors)  max = nums[i];
            }
            
            for(int i = 0; i < index; i++){
                if((max.Factors == nums[i].Factors) & (max.Number < nums[i].Number)){
                    max = nums[i];
                }
            }
            
        Console.WriteLine("Максимальное число " + max.Number + 
                              " с максимальным кол-вом делителей " + max.Factors);
            
            Console.ReadKey(true);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5
Похожие ответы