这是原始问题:
编写一个脚本,询问用户两个正数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功能的情况下做到这一点,这就提出了另一个问题。如果他们要我列出素数怎么办?在这种情况下检查的方法是什么?
答案 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);