给定一个正整数n,计算有多少个不同的连续自然数段,其中自然数的个数至少为2,其和恰为n。
u 例如,当n = 27时,有3 个不同的长度大于等于2 的连续自然数段的和恰为27:
2 + 3 + 4 + 5 + 6 + 7、8+ 9 + 10、13 + 14;
而单独的27不算。
代码:
#include<iostream>
#include<math.h>
using namespace std;
void Print(int a,int b,int n) //打印连续的a到b
{
while(a<b){
cout<<a<<"+";
a++;
}
cout<<b<<"="<<n<<endl;
}
void main()
{
int a,n;
double b;
cout<<"please input n:";
cin>>n;
for(a=1;a<=n/2;a++)
{
b=(-1.0+sqrt(1.0-4.0*(a-a*a-2.0*n)))/2.0;
if(b==int(b)) //判断b是否为整数
Print(a,b,n);
}
}
笔记:如何判断double类型的数据是否为整数 ?用b==int(b)