题解 | 质数因子

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

利用性质,一个数 n 最多只会有一个大于 sqrt(n) 的因子。

注意数据范围,发现可以使用 sqrt(n) 的复杂度直接求质因子,所以直接从 2 遍历到 sqrt(n),如果是因子就输出然后除掉。这样的方法只会拆出质因子,最后剩下的一个数如果不是 1,那就是那个大因子

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 5;
int __t = 1, n;
void solve() {
    cin >> n;
    for (int i = 2; i * i <= n; ++i) {
        while (n % i == 0) {
            n /= i;
            cout << i << " ";
        }
    }
    if (n > 1)
        cout << n << " ";
    return;
}
int32_t main() {
#ifdef ONLINE_JUDGE
    ios::sync_with_stdio(false);
    cin.tie(0);
#endif
    // cin >> __t;
    while (__t--)
        solve();
    return 0;
}

 每日一题攒牛币,大厂offer不是梦,点我马上开始赚牛币

#牛客春招刷题训练营#

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务