Я пытаюсь найти простые множители положительного числа и отделить их от «*», моя функция работает, иногда она печатает две звезды вместо одной. 2*2**3
Отображать простые множители положительного числа, разделенные «*» в c
void ft_prime(int n)
{
int i;
int y;
i = 3;
y = 0;
while (n % 2 == 0)
{
ft_putnbr(2);
ft_putchar('*');
y = 1;
n = n/2;
}
while (i <= ft_sqrt(n))
{
while(n % i == 0)
{
if (y)
ft_putchar('*');
ft_putnbr(i);
y = 1;
n = n/i;
}
i += 2;
}
if (n > 2)
{
ft_putchar('*');
ft_putnbr(n);
}
}
В первом цикле вы печатаете число, за которым следует звезда. Во втором цикле вы печатаете звезду, за которой следует номер. Вы должны сделать первый цикл точно таким же, как во втором цикле. – user3386109
@ user3386109, если я это сделаю, я получаю хвост '*', например '2 * 2 * 3 *' –
добавляет условие, которое только печатает завершающий '*', если есть остающиеся факторы –