daimayuan每日一题#812 互质

题目链接:互质 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/812

要在1到m的闭区间内找到与给出数组内的元素都互质的的数,并输出它们。

考虑互质就是不存在公因子,考虑把数组的元素分解成素因子。然后枚举1到m。看是否会有公因子。没有就是答案之一

//#define pei_pei_
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define FI first
#define SE second
#define _for(type,i,a,b) for(type i=(a);i<(b);++i)
#define _efor(type,i,a,b) for(type i=(a);i<=(b);++i)
#define _rfor(type,i,a,b) for(type i=(a);i>(b);--i)
#define _refor(type,i,a,b) for(type i=(a);i>=(b);--i)
#define _sfor(p,st) for(auto &p:st)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,ll> pii;
const double pi=acos(-1.0);
const double eps=1e-8;
const int mod=1e9+7;
const int _mod=998244353;
const int inf=0x3f3f3f3f;
const int maxn=100010;

//-------------------------------------------------------------------

   int n,m,a[maxn],num[maxn];
//-------------------------------------------------------------------
signed main(){
    //ifstream cin("D:\\in.txt");
    //ofstream cout("D:\\out.txt");
    IOS;
    #ifdef pei_pei_
    double be=clock();
    #endif // err

//==================================================================
   int n,m;
   cin>>n>>m;
   _for(int,i,0,n)cin>>a[i];
   _for(int,i,0,n){
       int k=a[i];
        for(int j=2;j*j<=k;j++){
            while(k%j==0){
                num[j]++;
                k/=j;
            }
        }
        if(k>1){
            num[k]++;
        }
   }
   vector<int> ans;
   _efor(int,i,1,m){
        int k=i;
        int jud=1;
        for(int j=2;j*j<=k;j++){
            if(k%j==0){
                if(num[j])jud=0;
                while(k%j==0)k/=j;
            }
        }
        if(k>1){
                if(num[k])jud=0;
        }
        if(jud)ans.push_back(i);
   }
    cout<<ans.size()<<'\n';
    _sfor(it,ans)cout<<it<<'\n';





//==================================================================

    #ifdef pei_pei_
    double en=clock();
    cout<<endl<<"time: "<<fixed<<setprecision(8)<<en-be<<" ms";
    #endif // err
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值