def count_zy(num):
count=0
i=2
while i*i<=num:
if num%i==0:
# 如果一个数是num的约数,并且也是质数,则count+1
if is_prime(i):
count+=1
# 如果num/i是num的约数,并且也是质数且和i不相等,count+1
if is_prime(num//i) and num//i!=i :
count+=1
i+=1
# 如果本身也是质数,则count+1
if is_prime(num):
count+=1
return count
# 判断是否为质数
def is_prime(num):
if num<2:
return False
else:
i=2
while i*i<=num:
if num%i==0:
return False
i+=1
return True
num=int(input())
count=count_zy(num)
print(count)
这个代码中,
count_zy
函数首先遍历从2到num
的所有数字。对于每个数字i
,如果它是num
的约数,那么就判断i
是否是质数。如果是,那么计数器就会增加1。同时,如果num
除以i
的商是num
的约数,并且该商是质数,并且i
和商不相等,那么计数器也会增加1。最后,如果num
本身是质数,则计数器也会增加1。
is_prime
函数用于判断一个数字是否是质数。它遍历从2到该数字的平方根的所有数字,检查是否有数字能够整除该数字。如果没有,则该数字是质数。