# re: 表正整數n為連續(xù)整數的條件和方法 回復 更多評論
2009-01-19 23:51 by
# re: 表正整數n為連續(xù)整數的條件和方法 回復 更多評論
2009-01-22 10:45 by
good.
實現倒是不難, 關鍵是怎么樣讓它執(zhí)行次數最少,至少是比較少。
# re: 表正整數n為連續(xù)整數的條件和方法 回復 更多評論
2010-08-11 10:59 by
網上講連續(xù)整數和問題的博文很多,但博主這篇最講的最明白,贊一個~~~
我按照樓主論文提供的方法寫了一個,代碼如下,其循環(huán)次數為O(n/4),相比之下還是樓主的方法更快些,循環(huán)次數為O(sqrt(2n)),
void ContinueInt(int n)
{
int i, k, m, num=0;
for(i=3; i<n/2+1; i +=2) //以步長為2從3開始到n/2為止,求n的所有奇數因子
{
if(n%i == 0)
{
++num;
m = n/i;
k = (i-1)/2;
for(int j=(m-k>0)?(m-k):(k-m+1); j<=m+k; ++j) //利用論文中的結論
cout<<j<<" "; //即n=(2k+1)*m=(2k+1)*2m/2=(2k+1)(m-k+m+k)/2
cout<<endl;
}
}
if(n%2)//n本身是奇數
{
++num;
cout<<(n-1)/2<<" "<<(n-1)/2+1<<endl;
}
cout<<"in all, num="<<num<<endl;
}