[蓝桥杯2022初赛] 质因数个数
Posted Tisfy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[蓝桥杯2022初赛] 质因数个数相关的知识,希望对你有一定的参考价值。
授权转载于好朋友@m0_68534772的博客https://blog.csdn.net/m0_68534772/article/details/125706319,有兴趣可以去他的OJ系统看看,界面十分优美。
前言
蓝桥杯省赛历年真题已经收录至oj.zhtwinkle.cn,推荐大家到这个OJ去刷蓝桥杯省赛真题
题目链接
题目描述
给定正整数 ,请问有多少个质数是 的约数。
输入格式
输入的第一行包含一个整数 。
对于 的评测用例,。
对于 的评测用例,。
对于所有评测用例,。
输出格式
输出一个整数,表示 的质数约数个数。
输入样例
396
输出样例
3
数据范围与提示
有 ,, 三个质数约数。
分析
该问题基于算数基本定理
对于任意一个正整数 ,可以将它分解成 个质因子的乘积
例如
由此定理可以发现,对于正整数 来说,它的任意一个因数 都是它质因数的乘积
所有因数即是它质因数乘积的各种组合
如 的因数 ,分解为
由此可以快速的分解出一个数 的所有因数
C++代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll check(ll x)
ll temp=x,cnt=0;
for(int i=2;i<=sqrt(temp)&&temp>1;i++)
if(temp%i==0)
cnt++;
while(temp%i==0)
temp/=i;
if(temp>1)
cnt++;
return cnt;
int main()
ll n;
cin>>n;
cout<<check(n)<<endl;
return 0;
Python代码
n = int(input())
ans = 0
i = 2
while i*i<=n:
if n%i==0:
ans+=1
while n%i==0:
n//=i
i+=1
if n>1:
ans+=1
print(ans)
以上是关于[蓝桥杯2022初赛] 质因数个数的主要内容,如果未能解决你的问题,请参考以下文章
蓝桥杯省赛真题13python因素个数 青少年组蓝桥杯python编程省赛真题解析