matlab:求具有 abcd=(ab+cd)^2 性质的四位数

要怎么改
n=1000:9999;
for i1=1:9;
i2=0:9;
i3=1:9;
i4=0:9;
a=i1.*10+i2;
b=i3.*10+i4;
if ((a+b).^2==n);
disp([n])
end
end

第1个回答  2011-04-15
用for循环太麻烦了,建议用矩阵,如:
>> a = 10:99;%所有的二位数
>> repa = repmat(a,length(a),1);%复制成矩阵ab
>> repb = repa'; %生成矩阵cd
>> sab = (repa+repb).^2;
>> csign = (sab == (repa*100+repb));%验证abcd=(ab+cd)^2
>> sum(csign(:))
ans =

2
>> [I, J] = find(csign)

I =

16
16

J =

11
21
也就是说,只有两个数,他们的位置在(16,11)和(16,21),即
>> repa(16,11),repb(16,21)

ans =

20

ans =

25

>> (20+25)^2

ans =

2025

另外一对数是
>> repa(16,21),repb(16,21)

ans =

30

ans =

25
第2个回答  推荐于2016-02-03
for n=1000:9999;
a=floor(n/100);
b=mod(n,100);
if ((a+b).^2==n);
disp([n])
end
end追问

a=floor(n/100);
这表示什么

追答

n/100后取整数,即前两位数(退位法,超过部分直接略去,如>5,<6的数都取5)

本回答被提问者采纳
第3个回答  2011-04-15
res=0;
k = 1;
for abcd = 1000:9999
str = num2str(abcd);
ab = str2num(str(1:2));
cd = str2num(str(3:4));
if abcd == (ab + cd)^2
res(k) = abcd;
k = k+1;
end
end
第4个回答  2011-04-15
i3=0:9;

从1循环与n不对应

matlab:求具有 abcd=(ab+cd)^2 性质的四位数
>> a = 10:99;%所有的二位数 >> repa = repmat(a,length(a),1);%复制成矩阵ab >> repb = repa'; %生成矩阵cd >> sab = (repa+repb).^2;>> csign = (sab == (repa*100+repb));%验证abcd=(ab+cd)^2 >> sum(csign(:))ans = 2 >> [I, J] = find(csign)...

用Matlab编写程序,求四位数
1、搜索的范围为1000-9999;2、用一个循环查找每一个符合的数。3、做一个判断一个数时否符合条件的子程序。4、在判断子程序中,对这个数做除10取余,得到每一位数,并统计总数。然后做判断。下面是程序 主程序 number = []; % 最后得到符合条件的数 for i = 1000:9999 tt=numweigh(i);if ...

求满足abc=(a+b+c)^3 的所有三位数abc 。
a+b+c=5或者6或者7或者8或者9啦 5的3次方=125 1+2+5=8 不符合。6的3次方=216 2+1+6=9 不符合 7的3次方 =343 3+4+3=10 不符合 8的3次方=512 5+1+2=8 符合 9的3次方=729 7+2+9=18不符合。就只有一个咯 512 ...

::matlab编程求某正整数的三次方是四位数,四次方是六位数,四位数和六位...
clc;clearab =floor([10^(4-1),10^4-1].^(1\/3));cd =floor([10^(6-1),10^6-1].^(1\/4));imax = min([ab(2) cd(2)]);imin = max([ab(1) cd(1)]);for i = imin :1: imax numi4 = i^3; numi6 = i^4; str = [num2str(numi4),num2str(numi6)]...

matlab编程求一个四位数abca,使得abca+=+(5*c+1)2?
求一个四位数abca,使得abca=(5c+1)²。分析:一个四位数abca,可以看成 a×1000+b×100+c×10+a 的加法算式,此时问题就可以极值的方法来求解。解决方案:分别设a=x(1),b=x(2),c=x(3),则 x(1)×1001+x(2)×100+x(3)×10=(5×x(3)+1)²使用matlab的fmincon(...

matlab:用while设计,找出第一个满足abcd=a^4+b^4+c^4+d^4的四位数
i=1000:1:9999;a=fix(i.\/1000);b=mod(fix(i.\/100),10);c=mod(fix(i.\/10),10);d=mod(i,10);e=a.^4+b.^4+c.^4+d.^4;j=1;while(i(j)~=e(j))j=j+1;end i(j)其实很简单就可以求出全部满足条件的,你只要第一个 ...

matlab中怎么求多项式的解
2、在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:solve(s,v):求解符号表达式s的代数方程,求解变量为v。例如,求方程(x+2)x=2的解,解法如下:>> x=solve('(x+2)^x=2','x')x = .69829942170241042826920133106081 得到符号解,具有缺省精度。如果需要指定精度...

怎么用matlab求一个四位数的各位数字之和?
n=3456s=sum(num2str(n)-'0')n=3456s=sum(floor((mod(n.\/10.^(0:3),10)))

关于matlab一次求解很多个形式相同的方程组
2、第三行:eq=p1(:).t^3+p2(:).t^2+p3(:).t-x 首先,相乘应该用“*”,而不是“.”;其次,如果你把方程组写到一起,则求解时会被认为联立求解。我猜测你的1000个方程应该是独立求解的,这与你的希望不符。3、如果想求数值解,可考虑用roots,速度比起求符号解相差无数倍。只需把...

用matlab计算在[-3π,3π]区间,求y=cos(x)*In(x^2)的值。
x=π,y(x)=-2.2895;x=2π,y(x)=3.6758;x=3π,y(x)=-4.4867;【计算代码】打开matlab软件,可以直接在命令窗口中输入下列语句:>>x=[-3*pi:pi:3*pi] ←创建x等差数列数组,公差为pi(π)>>y=cos(x).*log(x.^2) ←使用点运算符,计算其对应于x的y值 运行结果 【本...

相似回答