n 的第k个因子
my code:
int kthFactor(int n, int k){
int i,time = 0,max = 0;
for(i = 1;i <= n; ++i){
if (n % i == 0 ){
time++;
max = max > i ? max : i;
}
if (time == k){
return i;
}
} return -1;
}
优解:
int kthFactor(int n, int k){
int i;
for(i = 1;i <= n; ++i){
if (n % i == 0 ){
k--;
if (0 == k){
return i;
}
} return -1;
}
领悟:代码的书写可以尽量简洁明了,减少不必要的步骤,在此处,建立一个计数器就没有必要,可以直接让k自减,当k == 0 时,必然满足要求,对于不满足循环条件的,循环外直接返回-1即
可。最开始我还犯了一个错误,想枚举所有的n的因子,因此想在最外部使用while,因为我始终想的是一定要将n 的因子全部找出来,然后利用循环时的排次来找第k个因子,其实找到k == 0时,就无需再找下去,而因子数目小于k时,直接返回-1就可以了。
浙公网安备 33010602011771号