问题描述
给定正整数 n, 请问有多少个质数是 n 的约数。
输入格式
输入的第一行包含一个整数 n 。
输出格式
输出一个整数, 表示 n 的质数约数个数。
样例输入
396
样例输出
3
样例说明
396 有 2,3,11 三个质数约数。
评测用例规模与约定
对于 30% 的评测用例, 1 ≤ n ≤ 10000 。
对于 60% 的评测用例, 1 ≤ n ≤ 10^9 。
对于所有评测用例, 1 ≤ n ≤ 10^16 。
思考:
约数:又称因数,没有余数,取余为0
质数:指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
参考代码:
n=int(input())
i=2
ans=0
while i*i<=n: #这里i<=n 也可
if n%i==0: #判断是否为质数
ans+=1
while n%i==0:
n//=i
i+=1
if n!=1:
ans+=1
print(ans)