ABC D求助 A38 WA25
  • 板块学术版
  • 楼主tehllra
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/12/3 22:21
  • 上次更新2023/10/27 00:34:02
查看原帖
ABC D求助 A38 WA25
325014
tehllra楼主2022/12/3 22:21
#include<bits/stdc++.h>
#define int long long
using namespace std;
int k,n,l=1;
int check(int x)
{
    int f=1;
    for(int i=2;i<=sqrt(x);i++)
    {
        if(x%i==0)
        {
            f=0;
            break;
        }
    }
    return f;
}
signed main()
{
    cin>>k;
	if(check(k))
	{
		cout<<k;
		return 0;
	}
    for(int i=2;i<=sqrt(k);i++)
    {
        if(k%i==0)
        {
            l=i;
            break;
        }
    }
    for(int i=l;;i++)
    {
        if(__gcd(k,i)!=1)
        {
            k/=(__gcd(k,i));
            if(check(k))
            {
                cout<<max(k,i);
                break;
            }
        }
		if(__gcd(k,l)==1)
		{
    		for(int j=2;j<=sqrt(k);j++)
    		{
    		    if(k%j==0)
    		    {
    		        l=j;
    		        break;
    		    }
    		}
			i=l-1;
		}
    }
    return 0;
}

大体思路就是从小往大一个一个找k的质因数,除干净了就找下一个

2022/12/3 22:21
加载中...