*
问题描述
给定正整数 n, 请问有多少个质数是 n 的约数。
输入格式
输入的第一行包含一个整数 n 。
输出格式
输出一个整数, 表示 n 的质数约数个数。
*/
```c++
#include
#include
using namespace std;
int main()
{
long long n=0;
int ans=0;
scanf("%lld",&n);
for(int i=2;i<=n/i;i++)
{
if(n%i==0)
{
ans++;
while(n%i==0)
n/=i;
}
}
if(n>1)
ans++;
printf("%d\n",ans);
return 0;
}
```
因为最大的因数不能超过根号下n。一个比根号n还大的数,必然相乘的另一个因数小于根号n,那么已经判断过了
这么写可以略微快一点点。
i<=n/i,相当于i*i<=n
#include<bits/stdc++.h>
using namespace std;
long long ans;
int a[100010];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i-1]==1&&a[i]>=1)
{
a[i-1]--;
a[i]--;
ans++;
}
ans+=a[i]/2;
a[i]%=2;
}
cout<<ans;
}