T1

GCD

https://ac.nowcoder.com/acm/contest/7607/A

对于x质因数分解,如果只有一种质因子a,那x对答案的贡献即为a,否则为1

于是仿O(n log n)筛质数的方法,稍作修改就A了?

code:

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N = 10000010;
int prime[N] , idx;
int L , R;
int gcd[N];
int main()
{
    scanf("%d%d" , &L , &R);
    for(int i = 2 ; i <= R ; i++)
    {
        if(gcd[i]) continue;
        gcd[i] = i;
        int now = i ;
        for(int j = 2 ; i * j <= R ; j++) gcd[i * j] = 1;
        for(int j = 2 ; (ll)now * i <= R ; j++)
        {
            now *= i;
            gcd[now] = i;
        }
    }
    long long sum = 0;
    for(int i = L ; i <= R; i++) sum += gcd[i];
    printf("%lld" , sum);
    return 0;
}
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务