问题的评论
-
12个评论
2是质数,所以示例解应该是(2+3+5)/3 = 3.33....
+1,例子是错误的:(
*脸红*哦!至少我们得到了正确的测试套件。谢谢你的笔记。固定它。
我不明白这个问题
好一个…
我不明白为什么这不能用于测试3:out=sum(in.*isprime(in))/sum(isprime(in))
它适用于所有其他测试,但测试3要求答案为3,而代码给出的答案为3.0000。有人能告诉我为什么吗?
有趣的:)
好
好一个
这个题目很难理解。
对初学者来说是个好问题。
怎么了
find(isprime(in))
Out = mean(in) ?
它在我自己的MATLAB环境中工作得很好
解决方案的评论
-
2的评论
3号,我在电脑上得到的结果是3.0000,但是失败了,我现在很困惑。
Prime = isprime(in);
Out = sum(in.*prime)/sum(prime);
这是因为MATLAB是浮点运算,而不是精确(十进制)运算。
你可以在你的计算机上用MATLAB - sprintf('%0.18f\n', out)做一个快速检查,在计算出来之后,你会看到值不完全是3。
-
2的评论
tf = isprime(的);
数= nnz (tf);
合计=总和(sum (tf。*));
=合计/计数;
为什么这个代码不能工作
好!
-
2的评论
-
1评论
为什么会这样,
3.
失败
X = [3 3;3 3];
y_right = 3;
断言(isequal (meanOfPrimes (x) y_correct))
Out = 3.0000
断言失败。
为什么?
-
2的评论
非常容易
奇怪的弯曲,但还好
-
1评论
gj
-
1评论
作弊
-
1评论
我也有测试3的问题,但这段代码如果已经通过了所有测试:
函数out = meanOfPrimes(in) mean = sum(in.*isprime(in))/sum(isprime(in));Out =圆(均值,1);结束
-
3评论
In = [3 3;3 3]
在=
3个3
3个3
> >总和(。* isprime()) /笔(isprime ())
ans =
3.0000
错在两个方面:
(1)测试3的分子和分母将是向量,而不是标量,因为sum()是这样工作的;
(2)因此使用了MATLAB矩阵除法算法,它引入了截断误差。您的代码为测试3产生了一个所谓的答案3 - (4.4409E-16)。当然,如果只显示小数点后几位,则显示为“3.0000”。
为了避免这个问题,将输入矩阵重塑为一个向量。这可以通过重塑命令来完成,但更简单的方法是简单地索引为“in(:)”。
这是在https://au.mathworks.com/matlabcentral/cody/problems/14-find-the-numeric-mean-of-the-prime-numbers-in-a-matrix/solutions/114万博 尤文图斯2672中完成的
另一种有效(但不那么优雅)的方法是嵌套求和:sum(sum(sum(…))))。(但必须至少使用与矩阵的维数相同的“sum”命令。)
要进行调试,请尝试使用whoos命令。
@David Verrelli
谢谢!它的工作原理。
-
2的评论
-
2的评论
-
1评论
为什么第三次测试失败了?它在Matlab中工作。
-
1评论
*慢拍*
先生,你是一个c语言程序员…
-
1评论
我试过用这种方法,很成功。但. .:(
-
2的评论
-
1评论
这应该可以工作,但是由于舍入错误,它没有通过第三个测试,因为它产生的ans值为4.409e-16 out。
-
3评论