zoukankan      html  css  js  c++  java
  • bzoj2818: Gcd

    2818: Gcd

    Time Limit: 10 Sec  Memory Limit: 256 MB

    Description

    给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
    数对(x,y)有多少对.

    Input

    一个整数N

    Output

    如题

    Sample Input

    4

    Sample Output

    4

    HINT

    hint

    对于样例(2,2),(2,4),(3,3),(4,2)


    1<=N<=10^7

    Source

    湖北省队互测

    枚举每个素数p;

    求有多少对Gcd(x/p,y/p)=1,

    相当于∑ ∑¢(y/p);

    Code:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 5000007
    using namespace std;
    
    long long add[MAXN],ans;
    int phi[MAXN*2],prime[MAXN];
    bool flag[MAXN*2];
    int n,tot; 
    
    void init(){
        phi[1]=1;
        for(int i=2;i<=n;i++){
            if(!flag[i]){
                flag[i]=1;
                prime[++tot]=i;
                phi[i]=i-1;
            }
            for(int j=1;j<=tot&&i*prime[j]<=n;j++){
                flag[i*prime[j]]=1;
                if(i%prime[j]==0){
                    phi[i*prime[j]]=phi[i]*prime[j];
                    break;
                }else{
                    phi[i*prime[j]]=phi[i]*phi[prime[j]];
                }
            }
        }
    }
    
    int main(){
        scanf("%d",&n);
        ans=tot=0;
        init();
        for(int i=1;i<=n/2;i++)
            add[i]=add[i-1]+phi[i];
        for(int i=1;i<=tot;i++)
            ans+=add[n/prime[i]];
        printf("%lld",ans*2-tot);
    }
  • 相关阅读:
    lambda Join /Group by/ Contains
    PDF ITextSharp
    sql server基本流程语句
    easyui DateTimeBox OK
    Axuer 网页
    蓝桥杯- 煤球数目-java
    蓝桥杯-有奖猜谜-java
    蓝桥杯-打印大X-java
    蓝桥杯- 移动距离-java
    蓝桥杯-加法变乘法-java
  • 原文地址:https://www.cnblogs.com/WQHui/p/8427806.html
Copyright © 2011-2022 走看看