求邻近数的和等于这个数值的全部数
求相邻数的和等于这个数值的全部数
今天群里问了一个面试题,这里记录一下,欢迎指点,提出更优方案:
题目:
输入一个数值,求出这个数值所包含的相邻数的和等于这个数值的全部数,并且全部输出 例:输入数 15
输出:15=1+2+3+4+5
15=4+5+6
15=7+8 求思路
public static void countNum( int num){ int rs = 0; for(int i=1,j=1;i<=(num/2)+1;i++){ if(rs<num){ rs += i; } if(rs > num){ rs -= j; j++; if(rs>num){ i--; } } if(rs == num){ System.out.println(j+" + ... + "+i +" = "+num); rs -= j; j++; } } } public static void main(String[] args) { long a = System.currentTimeMillis(); countNum(100000000); long b = System.currentTimeMillis(); long c = b-a; System.out.println("总时间:"+c+"毫秒"); }
思路:1.数字依次从1 开始向后 连续相加:1+2+3+...
2.没加一次,结果集和比较的数字相比,等于就打印,小于 继续加,大于 就减去最前面的一个数
3.循环完毕,这里就只打印前末 数字