C语言-蓝桥杯2022年第十三届省赛真题-质因数个数

题目描述

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

输入格式

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

输出格式

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

样例输入

复制代码
396

样例输出

复制代码
3

提示

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

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

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

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

复制代码
#include<iostream>
#include<cmath>
using namespace std;
bool sort(long long n);
int main()
{
    long long n;
    int sum=0;
    cin>>n;
    if(n<=1) cout<<'0';
    if(sort(n)){//先行判断是否质数
        for(long long i=2;i<=sqrt(n)+1;i++){
            if(n%i==0){
                if(!sort(i)) sum++;
                if(!sort(n/i)&&n/i!=i) sum++;
            }
        }
        cout<<sum;
    }
    else cout<<'1';
    return 0;
}
bool sort(long long n)
{
    if(n==2) return false;
    if(n%2==0) return true;//除去偶数的判断
    for(long long j=3;j<=sqrt(n)+1;j+=2){
        if(n%j==0) return true;
    }//sqrt简化复杂度
    return false;
}
相关推荐
Xの哲學2 小时前
TCP 连接管理:深入分析四次握手与三次挥手
网络·网络协议·算法
华清远见成都中心4 小时前
基于深度学习的异常检测算法在时间序列数据中的应用
人工智能·深度学习·算法
এ᭄画画的北北6 小时前
力扣-347.前K个高频元素
算法·leetcode
etcix7 小时前
wrap cpp variant as dll for c to use
java·c语言·开发语言
月殇_木言8 小时前
算法基础 第3章 数据结构
数据结构·算法
亮亮爱刷题9 小时前
算法提升之树上问题-(LCA)
数据结构·算法·leetcode·深度优先
papership9 小时前
【入门级-C++程序设计:11、指针与引用-引 用】
c语言·开发语言·c++·青少年编程
火车叨位去19499 小时前
力扣top100(day03-01)--二叉树 03
算法·leetcode·职场和发展
岁忧9 小时前
(LeetCode 每日一题) 1780. 判断一个数字是否可以表示成三的幂的和 (数学、三进制数)
java·c++·算法·leetcode·职场和发展·go
浩少70210 小时前
LeetCode-16day:栈
java·数据结构·算法