#include<bits/stdc++.h>
using namespace std;
inline long long solve(long long n)
{
bool IsPrime[1000100];
long long num;
num=0;long long prime[1000100];
memset(prime,0,sizeof(prime));
memset(IsPrime,false,sizeof(IsPrime));
for(long long i=2;i<=1000000;i++){
if(IsPrime[i]) continue;
prime[num++]=i;
for(long long j=i+i;j<=1000000;j+=i)
IsPrime[j]=true;
}
long long ans=1,sum;
for(int i=0;i<num&&prime[i]*prime[i]<=n;i++){
long long tmp=prime[i];
sum=0;
if(n%tmp==0){
while(n%tmp==0){
n/=tmp;
sum++;
}
ans*=(sum+1LL);
}
}
if(n>1) ans*=2;
return ans;
}
int main(){
int n;
cin>>n;
cout<<solve(n);
return 0;
}
这样运行不了,然后我把 long long prime[1000100];放到函数外面就行了,为啥啊