就是我60分,不是很理解时间复杂度这些东西,我想明白为什么我的代码会超出时间限制

P1075 [NOIP2012 普及组] 质因数分解

恳求各路大神赐高见
by hgggggg @ 2023-08-10 15:32:06


应该是我做太多循环的问题吗
by hgggggg @ 2023-08-10 15:33:11


循环会导致超出限制的至少次数是什么
by hgggggg @ 2023-08-10 15:34:23


你这个时间复杂度 $O(n^2)$ 肯定不行,看看我的: ```cpp #include <iostream> #include <algorithm> using namespace std; long long n,mx = -1; int is_prime(int m) { if (m <= 1) return 0; for (int i = 2;i*i <= m;i++) { if (m%i == 0) { return 0; } } return 1; } int main() { cin>>n; for (long long i = 2;i * i <= n;i++) { if (n % i == 0 && is_prime(i)) { mx = max(mx,n / i); } } cout<<mx; } ```
by _Justin_ @ 2023-08-10 15:36:19


@[Justin2014](/user/993236) 为啥子肯定不行呢
by hgggggg @ 2023-08-10 15:37:49


循环太多
by _Justin_ @ 2023-08-10 15:41:01


看看数据范围
by _Justin_ @ 2023-08-10 15:41:21


@[Justin2014](/user/993236) 大哥,麻烦你讲一下你的思路,谢谢
by hgggggg @ 2023-08-10 16:24:22


循环最多 $10^8$,数据范围都变 $2 \times 10^9$ 了,再 $4 \times 10^{18}$ 估计都要卡了
by _Justin_ @ 2023-08-10 16:27:41


@[Justin2014](/user/993236) 不用了。我悟了大师
by hgggggg @ 2023-08-10 16:28:07


| 下一页