计算将数字表示为连续数字之和的方法

时间:2019-05-09 06:48:14

标签: java

计算将数字表示为连续数字之和的方式。说21,有3种方法可以得到它[1,2,3,4,5,6],[6,7,8]和[10,11]。

当我在互联网上寻找一些解决方案时,我来到了我无法理解的代码段。还是背后的数学理论。尽管它给出了正确的答案。

long countConsecutive(long num){
  long sumOfFirstIntegers = 3;        
  long count = 0;       

  for(long i = 2 ; sumOfFirstIntegers<=num; ++i){                         
    if((i%2==0)?(num%i==i/2): (num%i==0)){                      
      ++count;               
    }             
    sumOfFirstIntegers+=i+1;                    
  }           
  return count;          
}

1 个答案:

答案 0 :(得分:1)

与数学无关,这可能是引起您头痛的行:

if((i%2==0)?(num%i==i/2): (num%i==0)) { 

一个人可以这样重写:

bool condition;
if (i%2 == 0) {
  condition = num%i == i/2;
} else {
  condition = num%&i == 0;
}
if (condition) { ++count; }

因此ternary operator用于选择布尔条件,而%是modulo operator

对于所有这些内容的数学运算,我委托给geeksforce