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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章