AtCoder Beginner Contest 169 D.Div Game

AtCoder Beginner Contest 169 D.Div Game

题目链接
在这里插入图片描述
数论题,既然题目要找的能被 nn 整除的数都是素数的幂次方,那么我们就对每一个素数及其幂次方,找所有能被 nn 整除的即可,但是对一个数而言,它所有的因子都出现在 1sqrt(n)1-sqrt(n) 内,所以光这样判断还不够,最后还要特判一下 nn 是否大于 1,AC代码如下:

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
main(){
    ll n,ans=0,i,j;
    cin>>n;
    for(i=2;i<=sqrt(n);i++){
        j=i;
        while(n%j==0) ans++,n/=j,j*=i;
        while(n%i==0) n/=i;
    }
    cout<<ans+(n>1);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章