# re: 表正整数n为连续整数的条件和方法  回复  更多评论
						  
					
					2009-01-19 23:51 by 
				
 
				
			 
		
			
				
					
						# re: 表正整数n为连续整数的条件和方法  回复  更多评论
						  
					
					2009-01-22 10:45 by 
				
 
				good.
实现倒是不难, 关键是怎么样让它执行次数最少,至少是比较少。
			 
		
			
				
					
						# re: 表正整数n为连续整数的条件和方法  回复  更多评论
						  
					
					2010-08-11 10:59 by 
				
 
				网上讲连续整数和问题的博文很多,但博主这篇最讲的最明白,赞一个~~~
我按照楼主论文提供的方法写了一个,代码如下,其循环次数为O(n/4),相比之下还是楼主的方法更快些,循环次数为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;    
}