求相邻数的和等于这个数值的全部数
今天群里问了一个面试题,这里记录一下,欢迎指点,提出更优方案:
?
题目:
输入一个数值,求出这个数值所包含的相邻数的和等于这个数值的全部数,并且全部输出 例:输入数 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.循环完毕,这里就只打印前末 数字
?
?
?
? ?