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就可以了。
posted @ 2023-10-26 10:30  2B青年~  阅读(24)  评论(0)    收藏  举报