我确定一个数字是否为素数的原始函数是:
- bool is_prime(int x) {
- for (int y = 2; y < x; ++y) {
- if (x % y == 0) {
- return false;
- }
- }
- return true;
- }
这可能是复杂的O(x),因为你可能不得不去x.
我已经了解了一些优化,需要检查我的big-o.这是改进的计划:
- bool is_prime(int x)
- {
- if (x % 2 == 0 && x > 2) {
- return false;
- }
- for (int y = 3; y*y <= x; y += 2) {
- if (x % y == 0) {
- return false;
- }
- }
- return true;
- }
我现在上升到sqrt()的事实是否将其更改为O(sqrt(x))?