蓝桥杯刷题第十五天
创始人
2025-05-30 12:34:49
0

第三题:质因数个数

问题描述
给定正整数 n, 请问有多少个质数是 n 的约数。
输入格式
输入的第一行包含一个整数 n 。
输出格式
输出一个整数, 表示 n 的质数约数个数。
样例说明
396 有 2,3,11 三个质数约数。
评测用例规模与约定
对于 30% 的评测用例,1≤n≤10000 。
对于 60% 的评测用例, 1≤n≤109 。
对于所有评测用例, 1≤n≤1016 。
运行限制
最大运行时间:10s
最大运行内存: 512M

样例输入

396

样例输出

3

开始想到筛质数,过了90%,后面时间复杂度太高过不去

#include
using namespace std;typedef long long LL;
const int N = 1e8;
LL n;
int primes[N], cnt;
bool st[N];void get_primes(){for(int i = 2; i <= N; i++){if(!st[i]) primes[cnt++] = i;for(int j = 0; primes[j] <= N / i; j++){st[primes[j] * i] = true;if(i % primes[j] == 0) break;}}
}int main(){ scanf("%lld", &n);get_primes();int ans = 0;for(int i = 0; i < cnt; i++){if(n % primes[i] == 0) ans++;}cout<

后面想到分解质因子,考虑 i 平方 <= n 个数

是约数,除下去,最后 n > 1,n是最后一个质数,而且是约数

#include
using namespace std;typedef long long LL;
LL n;int main(){ scanf("%lld", &n);int ans = 0;for(int i = 2; i <= n / i; i++){if(n % i == 0){ans ++;while(n % i == 0) n /= i;}}if(n > 1) ans++;cout<

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...