Matlab编制程序验证一个正整数能否可以表示为多个连续的正整数之和

Matlab编制程序验证一个正整数能否可以表示为多个连续的正整数之和,第1张

分太少,一般的枚举的话,复杂度是指数增长的,1000都要算很久。

加到100分,by vase。

for q=2:100

for n=1:50

Sol=solve(['m*(m+1)/2-',num2str(n*(n+1)/2),'=',num2str(q)])

Sol=double(Sol)

a=find(Sol>0)

so=Sol(a)

if (fix(so)==so)&&((n+1)~=so)

disp([num2str(q),'=',num2str(n+1),'+.....+',num2str(so)])

break

end

end

end

%结果如下:

%规律有很多,其中大质数只能分解为两数之和;属于2的次方的数不能表示

%其他数的分解 此程序遵循分解的个数最多原则。

扩展资料:

Ⅰ 1是正整数

Ⅱ 每一个确定的正整数a,都有一个确定的后继数a' ,a'也是正整数(数a的后继数a‘就是紧接在这个数后面的整数(a+1)。例如,1‘=2,2’=3等等。);

Ⅲ 如果b、c都是正整数a的后继数,那么b = c;

Ⅳ 1不是任何正整数的后继数;

Ⅴ 设S⊆N*,且满足2个条件(i)1∈S;(ii)如果n∈S,那么n'∈S。那么S是全体正整数的集合,即S=N*。(这条公理也叫归纳公理,保证了数学归纳法的正确性)

参考资料来源:百度百科-正整数

字交叉验证的基本思路是,

1。选取6组做检测,剩余的做训练样本模型进行训练,然后检验模型的性能。

2。选取与前次不同的6组做检测,剩余的做训练样本对模型进行训练,然后检验模型的性能。

3。重复以上步骤,直到所有的样本都被用作1次检测样本。也就是说10次循环就可以了。

TF=0

while(~TF)

n=input('输入大于2的偶数:')

hn=floor(n/2)

TF=(n==2*hn)&(n>2)%输入并检查

end

p=primes(n)%n之内质数表

i=1

while(p(i)<=hn)

d=n-p(i)

if any(p==d)

fprintf('%d=%d+%d\n',n,p(i),d)

end

i=i+1

end

输入大于2的偶数:20

20=3+17

20=7+13


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11095142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存