Чтобы найти наименьший делитель, вам нужно проверить от 2 до n, что деление того числа дает остаток от 0. Первое число, в результате которого делится остаток от 0, является наименьшим.Смотрите реализацию ниже:
int n, i;
scanf("%d", &n);
i = 2;
while(i <= n){
if(n % i == 0){
printf("The smallest number is %d\n", i);
break;
}
i++;
}
Но вы можете сделать это более эффективно.вам на самом деле не нужно проходить до n
.Чтобы найти это, достаточно пройти до квадратный корень из n
.если вы не нашли наименьшее число после обхода до квадратного корня из n
, это означает, что наименьшее число - само n
.см. реализацию ниже.
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, sq;
scanf("%d", &n);
i = 2;
sq = sqrt(n);
while(i <= sq){
if(n % i == 0){
printf("The smallest number is %d\n", i);
break;
}
i++;
}
if(i > sq){
printf("The smallest number is %d\n", n);
}
}