我試圖找到正數的主要因素,並用'*'將它們分開,我的函數有效,有時會打印兩顆星而不是一顆。 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 *' –
添加一個條件,如果還有其他因素,只打印結尾的'*' –