題目鏈接:https://www.spoj.com/problems/NUMTRYE/
題目大意:任意一個整數都可以寫成均爲素數。定義了兩個函數:,爲的素因子且爲的最高次。
(。
給定,求:%1000000007。
思路:有個定理:
均爲素數。
(
那麼:%1000000007=%1000000007
AC代碼:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1000000007;
ll n;
const int maxn=1e6+10;
ll prime[maxn];
int vis[maxn];
int tot=0;
void pre()
{
for(ll i=2;i<maxn;i++){
if(vis[i]==0){
prime[tot++]=i;
for(ll j=i*2;j<maxn;j+=i){
vis[j]=1;
}
}
}
}
int main()
{
int t;
scanf("%d",&t);
pre();
while(t--){
scanf("%lld",&n);
ll ans=1;
for(int i=0;prime[i]*prime[i]<=n;i++){
if(n%prime[i]==0){
ans=ans*(prime[i]+1)%mod;
}
while(n%prime[i]==0){
n/=prime[i];
}
}
if(n>1){
ans=ans*(n+1)%mod;
}
printf("%lld\n",ans);
}
return 0;
}