//求约数个数 AC int getResult(int i_num) { int i_flag_max = i_num; int i_count = 0; for ( int i=1; i<=i_flag_max; i++ ) { if ( i_num % i == 0 ) { if ( i_num / i != i ) { i_count += 2; } else { i_count += 1; } } i_flag_max = i_num / i - 1; } return i_count; } 1、主要是通过减少循环的次数来减少时间复杂度,这里认为:遍历了i,则 num/i~num之间的数都不可能再成为其约数了。(实际也是这样) 2、num/i == i说明出现平方值等于num,此时算一个约数