作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不久前,我得到了一个关于如何编写 bool 函数来检查数字是否为质数的问题的答案:bool function for prime numbers .
因此,有效的代码是
bool prime(int x)
{
if (x < 2) return false;
for(int i=2; i<= sqrt(x); i++) {
if ((x%i) == 0) return false;
}
return true;
}
但是,如果我将代码更改为
bool prime(int x)
{
if (x < 2) return false;
for(int i=2; i<= sqrt(x); i++) {
if ((x%i) != 0) return true;
}
return false;
}
它不能正确地确定一个数字对于许多整数来说是否是质数。我认为这两段代码是等价的。有没有办法让这个 bool prime
函数与 !=
一起工作?
谢谢。
最佳答案
没有。在测试一个数是否为质数时,您知道它不是在您找到单个因数时就立即确定的。
这就是为什么您可以在第一个示例中尽早跳出 for 循环并返回 false 的原因:
if ((x%i) == 0) return false;
发现任何单个数字不是因数并不能证明数字是素数或非素数,因此您不能在这种情况下提前终止。
关于c++ - 对 bool prime 函数的轻微更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040380/
在看到赫伯·萨特斯出色之后talk关于“原子武器”我对轻松原子示例有点困惑。 我认为C++内存模型中的原子(SC-DRF =无数据竞争的顺序一致)在加载/上进行“获取”阅读。 据我所知,对于加载[和存
我是一名优秀的程序员,十分优秀!