c – 检查是否为素数大

前端之家收集整理的这篇文章主要介绍了c – 检查是否为素数大前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我确定一个数字是否为素数的原始函数是:
  1. bool is_prime(int x) {
  2. for (int y = 2; y < x; ++y) {
  3. if (x % y == 0) {
  4. return false;
  5. }
  6. }
  7. return true;
  8. }

这可能是复杂的O(x),因为你可能不得不去x.

我已经了解了一些优化,需要检查我的big-o.这是改进的计划:

  1. bool is_prime(int x)
  2. {
  3. if (x % 2 == 0 && x > 2) {
  4. return false;
  5. }
  6. for (int y = 3; y*y <= x; y += 2) {
  7. if (x % y == 0) {
  8. return false;
  9. }
  10. }
  11. return true;
  12. }

我现在上升到sqrt()的事实是否将其更改为O(sqrt(x))?

解决方法

是的,但这里没有.新函数的复杂性为O(sqrt(x)).当你说O(N)并且没有指定N是什么时,它通常被认为是输入的大小.这对于采用单个数字参数的函数来说是令人困惑的,因此在这些情况下,您应该是明确的.

猜你在找的C&C++相关文章