一种不同的方法来检查元素是否在matlab中是否均匀?

时间:2015-05-06 12:01:47

标签: matlab

这是原始问题:

编写一个脚本,询问用户两个正数a和b,并计算[a,b]范围内偶数的总和。脚本应该打印一个带有范围和总和值的消息,如下例所示。

输入范围的第一个数字:3

输入范围的最后一个数字:12

[3,12]范围内的偶数之和为40

我能够使用Rem功能解决它

a=input('Enter the first number of the range: ',d);

b=input('Enter the last number of the range: ',d);

m=0

For i=a:b;

    If rem(i,2)=0

    m=i+m;

    End

End

fprintf('The sum of the even numbers in the range [%d,%d] is %d\n',a,b,m)

我的问题是,因为我知道Rem功能我能够解决它。如何在不知道Rem功能的情况下做到这一点,这就提出了另一个问题。如果他们要我列出素数怎么办?在这种情况下检查的方法是什么?

3 个答案:

答案 0 :(得分:3)

如何

if ~mod(a,2)
    m = sum(a:2:b)
else
    m = sum(a+1:2:b)
end

在这种情况下,mod仅用于检查a。这是唯一需要的检查

答案 1 :(得分:2)

有很多方法可以检查数字是否均匀

这是另一种选择:

round(number/2) == (number/2)

样本1

>> number

number =

81

>> ans

ans =

 0

样本2

>> number

number =

92

>> ans

ans =

 1

还有一个内置函数(isprime)用于检查数字是否为素数

mathworks的示例:

>> isprime([2 3 0 6 10])

ans =

 1     1     0     0     0

答案 2 :(得分:1)

对于偶数之和,您可以使用:

numbers = 2*(ceil(a/2):floor(b/2)); %// even numbers in the given range
result = sum(numbers);

要保存操作,您只能在结尾处乘以2

result = 2*sum((ceil(a/2):floor(b/2)));

或直接计算结果:

x = ceil(a/2);
y = floor(b/2);
result = (y+x)*(y-x+1);