acac


私信TA

用户名:dotcpp0721969

访问量:4372

签 名:

等  级
排  名 2236
经  验 2485
参赛次数 0
文章发表 22
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:以根号n为界缩小时间复杂度

注意事项:对自身进行判断

#include<iostream>
#include<cmath>
using namespace std; 
typedef long long ll;
int is_z(ll n){//判断n是否是一个质数(是返回1,否则返回0)
     for(int i=2;i<=std::sqrt(n);i++){
     if(n%i==0) return 0;
     }
     return 1; 
}
int main()
    {
     int sum=0;
     ll n;
     cin>>n;
     for(int i=2;i<=std::sqrt(n);i++){
         if(n%i==0){//(i是n的约数)
             if(is_z(i)) sum++;//(i是n的约数,且i是质数)
             if(is_z(n/i)&&(n/i)!=i) {//(判断另一个约数n/i是不是质数)
                sum++; 
             }   
         }
     }
     if(is_z(n)) {//(因为判断是从2开始,没有判断自身情况,在此补充)
          sum++;
     }
     cout<<sum;
    return 0;
}


 

0.0分

4 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »