吃早饭


私信TA

用户名:dotcpp0721969

访问量:4245

签 名:

等  级
排  名 2424
经  验 2315
参赛次数 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 人评分

  评论区

  • «
  • »