>>330
その部分は、
「まずscanfを実行し、エラーがなく、且つnが正の場合に…」と読む。
書き換えたいなら、新しい入力関数
int input(void)
{
int n;
printf("?");
scanf("%d", &n);
return n;
}
を用意して
while((n = input()) > 0) ...
とするか、breakを使って、
while(1)
{
int n;
printf("?");
scanf("%d", &n);
if(n < 0) break;
print_factors(n);
}
とすれば良い。(scanfのエラーチェックは省いた)