[数论] [洛谷] P1403 [AHOI2005]约数研究
脸上笑嘻嘻
心里MMP
素数因子只有1和本身 所以不用判
线筛掉素数
剩下暴力
是当然过不了的!!!!!
大神解法:
1到N中
N个数有因子1
N/2个数有因子2
N/3个数有因子3
…………………
然后O(n)解出答案
#include <iostream>
using namespace std;
typedef long long ll;
const int MAXN = 1e6 + 10;
ll prime[MAXN] = {0};
ll check[MAXN] = {0, 1}, tf = 0;
void initprime(int len)
{
for(int i = 2; i < len; i++)
{
if(check[i] == 0)
prime[tf++] = i;
for(int j = 0; j < tf && i * prime[j] < len; j++)
{
check[i * prime[j] ] = 1;
if(i % prime[j] == 0)
break;
}
}
}
ll judege(ll x)
{
ll ans = 0;
for(int i = 1; i <= x; i++)
{
if(x % i == 0)
ans ++;
}
return ans;
}
int main()
{
ll n, ans = 0;
cin>>n;
/*initprime(n + 5);
for(int i = 1; i <= n; i++)
{
if(check[i] == 0)
ans+= 2;
else
ans += judege(i);
}
cout<<ans<<endl;*/
for(int i = 1; i <= n; i++)
{
ans += (n / i);
}
cout<<ans<<endl;
return 0;
}