Matlab训练1

这篇博客是关于Matlab的训练教程,涵盖了字符串处理、矩阵运用、素数判断等多个知识点。博主分享了作业答案,介绍了快速幂、埃拉托斯特尼筛法等高效算法,并探讨了不同情况下循环和快速幂的效率比较。还提醒读者注意在输入字符串时的语法细节,以及在计算最大公约数和最小公倍数时的不同方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条条大路通罗马。

Matlab官方帮助文档,记得复习代码中涉及的常用函数。
提供了作业题的答案,以及一些新鲜算法,感兴趣的可以自行理解和百度搜索,无强求。
(1_1——1_11之前讲过)
贴一下其他的几篇链接:
Matlab训练2
Matlab训练3
Matlab训练4
Matlab训练5
Matlab训练6


2-1

clc;
clear;
s=0;
n=input('请输入一个数n:');
k=input('请输入一个数k:');
for i=1:n
    if mod(i,k)==0
        s=s+i;
    end
end
s

2-2
此题需要注意字符串在input时用‘ ’引号引用起来才能成功赋值,另外复习fprintfdisp、以及length函数(详细请戳蓝色链接)

clc;clear;
str = input('请输入一串字符串:');
len = length(str);
fprintf('str的长度为:%d\n',len);

2-3
灵活运用矩阵,一个字符串就是一个一维数组

clc;clear;
str = input('请输入一个字符串:');
str1 = fliplr(str);
%也可以str1=str(end:-1:1);
fprintf('%d\n',strcmp(str,str1));

2-4
普通做法:for循环或者利用^符号运算(c/c++中该符号表示异或运算)【缺点:数据大时计算慢】
高级做法:快速幂
经计算,在计算2的次幂时,大于290363次幂时,快速幂更快小于等于时,普通的循环更快。数据越大差距越明显,非竞赛时可以就使用普通做法。

clc;clear;
m = input('请输入底数m:');
n = input('请输入指数n:');

%普通算法
tic		%计时开始
mul_nomal = 1;
for i = 1:n
    mul_nomal = mul_nomal*m;
end
mul_nomal
t_normal = toc;	%计时结束

%快速幂算法
tic;	%计时开始
mul_quickPow = 1;
while n>0
    if mod(n,2)~=0	%判断是否为奇数
        mul_quickPow = mul_quickPow*m;
    end
    n = fix(n/2);	%2取整
    m = m*m;
end
mul_quickPow
t_quickPow = toc;	%计时结束

if t_normal>t_quickPow
    disp('快速幂更快')
end

2-5
方法有很多,最简单的是使用matlab内置函数isprime.(注意一下1不是素数!!!)此外判断素数的方法还有以下几种:

方法一: 暴力,官方叫试除法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值