将一个数拆分成两个数的加和。
这个数为n,则一次
for(int I = 1; I < n; i++)
{
Printf(“%d,%d”,I,n-i);
}
前提条件中少了两个数皆为正
将一个数n拆分成任两个数的积。
最慢的方法是两个for
最快的方法是开一个m的空间(m*m>=n取最小的m)。比如4不能被整除,那么所以4的倍数都不能被整除。排除后一些,继续遍历可使速度加快。
题目描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如:
这个转换为数学公式最快:
a+1+a+2+a+3+…+a+k = z
最多有几个a是可以算出来的。
N*a+k*(k+1)/2 = z
(N == k)
当a==1时k的最大值就可用求根公式计算
然后for(int i=k,i>0;i--)循环就可以把所有的a找到。