Дано натуральное число n1. Выведите его наименьший делитель, отличный от 1. Решение...

0 интересует 0 не интересует
219 просмотров

Дано натуральное число n1. Выведите его наименьший делитель, отличный от 1.
Решение оформите в виде функции MinDivisor.

Туплю. Что не так с кодом?

#include
#include
using namespace std;
int MinDivisor (int n)
{
cin >> n;
int i = 2, min_den = 1;
int sqrt_n = sqrt((double)n);
while (i <= sqrt_n)<br> {
if (n % i == 0)
{
min_den = i;
break;
}
i++;
}
if (min_den == 1)
cout << n;<br> else
cout << min_den;<br> return 0;
}


спросил от Начинающий (922 баллов) в категории Информатика
оставил комментарий от Архангел (148k баллов)
0 0

Кроме того, что в #include пустота, функция зачем-то считывает ввод, а возвращает всегда 0?

1 Ответ
0 интересует 0 не интересует
ответил от БОГ (194k баллов)
 
Лучший ответ

#include
using namespace std;

int MinDivisor (int n)
{
int i = 2, min_den = 1;
while (i <= n/2)<br>{
if (n % i == 0)
{
min_den = i;
break;
}
i++;
}
return min_den;
}

int main() {
int n, min;
cin >> n;
min = MinDivisor(n);
if (min == 1)
cout << n;<br> else
cout << min;<br> return 0;
}

Пример:
169
13

...