循环跳出的条件判断: x<=a/x (等号必须取 不然1没有输出)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int cmp(const void*a, const void*b)
{
return *(int*)a - *(int*) b;
}
int main()
{
int n,a,b[1000],cnt=0;
scanf("%d",&n);
while(n--)
{
cnt=0;
scanf("%d",&a);
int x=1;
while(x<=a/x) //判断条件 一开始用了根号 显然这个更优 要取等号
{
if(a%x==0)
{
b[cnt++] = x;
if(a/x!=x) b[cnt++] = a/x;
}
x++;
}
qsort(b,cnt,sizeof(b[0]),cmp);
for(int i=0; i<cnt; i++)
{
printf("%d ", b[i]); //要看清题目的格式
}
printf("\n");
}
return 0;
}