Нахождение наименьшего числа с количеством делителей, равным n - C (СИ)
Формулировка задачи:
Здравствуйте, уважаемые.
Помогите написать программку, пожалуйста.
задание на экзамен. нужно очень очень срочно.
Задание:
Напишите функцию, которая будет находить наименьшее число с количеством делителей n, к примеру n=6, то наименьшее число будет 12, которое имеет 6 делителей : 1,2,3,4,6,12.
помогите, пожалуйста. просьба толко как можно проще, чтоб смог объяснить ее.
Спасибо огромное!
Решение задачи: «Нахождение наименьшего числа с количеством делителей, равным n»
textual
Листинг программы
#include <stdio.h>
int func(int value) {
int i, j, counter;
for ( i = value, counter = 0; i < 2000000000; i++ ) {
for ( j = 1; j <= i; j++ ) {
if ( i % j == 0 ) {
counter += 1;
}
if ( counter == value ) {
return i;
}
}
counter = 0;
}
return 0;
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", func(n));
return 0;
}
Объяснение кода листинга программы
В этом коде реализована функция func, которая должна найти наименьшее число с количеством делителей, равным n.
Алгоритм следующий:
- Переменная
iинициализируется значениемvalue. - Переменная
counterинициализируется нулем. - Два вложенных цикла перебирают все числа от
iдо 2000000000 (включительно). - Для каждого числа
jпроверяется, делится лиiнаjбез остатка. Если да, то переменнаяcounterувеличивается на единицу. - Если количество делителей равно
n, то текущее числоiвозвращается из функции. - После каждой итерации внешнего цикла переменная
counterсбрасывается в ноль. - В функции
mainсчитывается числоnс помощью функцииscanf. - Результат работы функции
funcвыводится на экран с помощью функцииprintf. - Функция
mainвозвращает ноль, заканчивая выполнение программы.