zoukankan      html  css  js  c++  java
  • Enlarge GCD(素数筛)

    题意

    删去最少的数,使gcd变大

    题解

    只要保留相同素数因子最多的数即可。

    素数筛。

    C++代码

    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN = 1.5e7+5;
    const int MAXM = 1.5e7+5;
    int Mark[MAXN];  
    int prime[MAXN]; 
     
    int Prime(){
        int tot = 0;
        memset(Mark,0,sizeof(Mark));
        Mark[0] = 1;
        Mark[1] = 1;
        for(int i = 2; i < MAXN; i++){
            if(Mark[i] == 0){
                prime[tot++] = i;
            }
           
            for(int j = 0; j < tot  && prime[j] * i  < MAXN ; j ++)
        {
            Mark[i * prime[j]] = 1;
            if(i % prime[j] == 0)
                break;
        }
    }
    return tot ;
    } 
     
    int a[300005],cnt[MAXN];
     
    int main(){
        int n ;
        int tot = Prime();
        cin >> n;
        int g = 0;
        for(int i = 0; i < n ; i++){
            cin >> a[i];
            g = __gcd(g , a[i]);
        }
        for(int i = 0 ;i < n ; i++){
            a[i] /= g;
            for(int j  = 0; prime[j] * prime[j] <= a[i] ; ++j){
                int p = prime[j];
                if(a[i] % p == 0) cnt[p]++;
                while(a[i] % p == 0) a[i]/= p;
            } 
            if(a[i]!=1) cnt[a[i]] ++;
        }
        int ans = n;
        for(int i = 2; i < MAXN; ++i){
            ans = min(ans, n - cnt[i]);
        }
        if(ans == n) ans = -1;
        cout << ans << endl;
        return 0;
    }
  • 相关阅读:
    BeanUtils.copyProperties的用法
    WinRAR下载
    安装Perl
    @Value设置默认值
    AutoHotkey
    解决springboot启动日志异常问题
    除以2换成位移操作(骚)
    IDEA生成doc文档生成chm文档
    VMWare虚拟机网络配置
    EOF小结
  • 原文地址:https://www.cnblogs.com/DWVictor/p/11230418.html
Copyright © 2011-2022 走看看