首先,您的代码应具有条件i <= n/2
,否则它可能会遗漏其中一个因素,例如,如果n = 12,则不会打印6。
将循环运行到数字的平方根(即i <= sqrt(n)
),并同时打印i
和n/i
(均为n的倍数)。
{
int n;
int i=2;
scanf("%d",&n);
while(i <= sqrt(n))
{
if(n%i==0) {
printf("%d,",i);
if (i != (n / i)) {
printf("%d,",n/i);
}
}
i++;
}
getch();
}
注意 :