AcWing 4658. 质因数个数

发布时间:2024年01月23日

链接 :?

https://www.acwing.com/problem/content/4661/

思路 :?

质因数分解

算法过程:
从2开始枚举所有的因数,到n / i
如果n % I == 0, 使用while循环将该质数除尽,并累加数量
如果最后n > 1,输出这个唯一一个大于√n的质因子。

首先给出y总的质因数分解的模板 :

void divide(int x)
{
? ? for (int i = 2; i <= x / i; i ++ )
? ? ? ? if (x % i == 0){
? ? ? ? ? ? int s = 0;
? ? ? ? ? ? while (x % i == 0) x /= i, s ++ ;
? ? ? ? ? ? cout << i << ' ' << s << endl;
? ? ? ? }
? ? if (x > 1) cout << x << ' ' << 1 << endl;
? ? cout << endl;
}


然后按照模板,统计一下个数(这里直接用set.size()表示)就行了,详细请看代码 :

代码 :?

#include<bits/stdc++.h>
using namespace std;
typedef long long LL ;

LL x ; 

int main(){
    cin >> x ;
    set<LL> st ;
    LL ans = 0 ;
    for(LL i=2;i<=x/i;i++){
        if(x%i==0){
            while(x%i==0) x/=i;
            ans ++ ;
        }
    }
    if(x>1) ans ++;
    cout << ans << endl ;
}

文章来源:https://blog.csdn.net/ros275229/article/details/135787638
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。