Welcome 微信登录

首页 / 软件开发 / JAVA / 表正整数n为连续整数的条件和方法

表正整数n为连续整数的条件和方法2011-06-27 BlogJava qiyadeng今天看到关于一个整数表示为n个连续整数和的问题。搜索了下找到如下文章:

还搜索到程序的实现:http://blog.csdn.net/Solstice/archive/2006/09/13/1217700.aspx

http://squall.cs.ntou.edu.tw/cprog/Assignments/99Fall/FindGivenSum.html

http://blog.chinaunix.net/u2/76292/showart_1359876.html(这个是不正确的)

我也简单的实现了下:(g++编译,主要思路是利用等差数列求和公式n=(a+a+k)*(k+2)/2列举k,找到合适的a)

#include <iostream>
#include <math.h>
using namespace std;
int main(){
int n;
cout<<"input n:"<<endl;
cin>>n;
int maxk=(int)sqrt((double)n*2);
int flag = 0;
//cout<<"maxk="<<maxk<<endl;
//for(int i=1;i<maxk+1;i++){
for(int i=maxk+1;i>0;i--){
double a = n/(double)(i+1)-i/(double)2;
//cout<<"a="<<a<<endl;

if(a>0&&a-(int)a==0){
//cout<<i<<endl;
for(int j=0;j<i+1;j++){
cout<<a+j<<" ";
}
cout<<endl;
flag=1;
}
}
if(flag==0){
cout<<"NONE"<<endl;
}
return 0;
}