Нужна помощь в задаче(делители чисел) - 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);
}
}
}