质因数个数(acwing,蓝桥杯)

题目描述:

给定正整数 n,请问有多少个质数是 n 的约数。

输入格式:

输入的第一行包含一个整数 n。

输出格式:

输出一个整数,表示 n 的质数约数个数。

数据范围:

对于 30% 的评测用例,1≤n≤10000。

对于 60% 的评测用例,1≤n≤1e9。

对于所有评测用例,1≤n≤1e16。

输入样例:

复制代码
396

输出样例:

复制代码
3

样例解释:

396 有 2,3,11 三个质数约数。

分析步骤:

第一:理清思路:

看到这个题目要求质因数个数,脑海中就应该立马出现试除法,线性筛,埃氏筛法....这一系列的方法,对于这道题目我们可以用试除法最简单了,因为试除法的时间复杂度为O(根号n)所以最大就是O(10^8)是可以算出来的。

第二:书写主函数,构建整体框架:

我们输入值,用for循环让i从2开始,因为2是最小的质因子,在判断一下i是否是n的约数,如果是的话,就计数器加加,再给他除干净,我们这么样处理的话我们就可以保证我们计数器每次加加都能是质因子。最终经过一系列的处理,如果i还是大于1的话就代表这个数也是质数还得加加。

最后输出就可以。

代码:

cpp 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

typedef long long LL;

LL n;

int main()
{
    cin>>n;
    int res = 0 ;
    for(LL i = 2; i <= n / i; i ++){
        if(n % i == 0){
            res++;
            while(n % i == 0){
                n /= i;
            }
        }
    }
    if(n > 1) res++;
    cout<<res;
    
    return 0;
}
相关推荐
Frostnova丶几秒前
LeetCode 2839. 判断通过操作能否让字符串相等 I
算法·leetcode
会编程的土豆2 分钟前
【leetcode hot 100】二叉树3
算法·深度优先·图论
云栖梦泽10 分钟前
Linux内核与驱动:2.驱动基础(编译驱动)
linux·服务器·c++
电商API_1800790524711 分钟前
API分享:获取淘宝商品价格|详情|主图|sku信息
开发语言·c++·人工智能·数据分析
ofoxcoding15 分钟前
GPT-5.4 API 完全指南:性能实测、成本测算与接入方案(2026)
人工智能·gpt·算法·ai
码农的神经元15 分钟前
基于改进 VMD 与自适应小波的水声信号去噪算法实现与分析
算法
羊小蜜.24 分钟前
C++17: map & multimap—— 键值映射容器
开发语言·c++·stl
tankeven35 分钟前
HJ156 走迷宫
c++·算法
旺仔.2911 小时前
STL排序算法详解
数据结构·算法·排序算法
酉鬼女又兒1 小时前
零基础快速入门前端蓝桥杯Web备考:BOM与定时器核心知识点详解(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯