一个正整数能否表示为多个连续正整数之和.分析:正整数M是否表示为1+2+3+...,2+3+4+...,3+4+5...
1个回答

function S = int2sum(X)

% INT2SUM 把一个正整数分解为若干连续正整数之和.

% S = INT2SUM(X)

%

% 输入:X 为正整数,小数则去掉小数部分,负数取绝对值

% 返回:S 为列数为2的矩阵,每行表示一种分解的情况,分解出的连续整数以第一列为首项,

% 第二列为尾项.如果无法分解成连续正整数之和,返回空矩阵[].

X = abs(fix(X(1))); % 如果是矩阵或者向量,只取第一个元素.小数取整,负数取绝对值.

S = [];

if X < 3,return; end % X