2024年码蹄杯高职组初赛第三场 寻找质因子 题型:数学

102 阅读1分钟

码题集OJ-寻找质因子 (matiji.net) 我刚开始是这样写的:

枚举i,看i是不是x的约数,同时看i是不是素数:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int x;

bool prime(int x)
{
	if(x<2)return false;
	

	for(int i=2;i*i<=x;i++)
	{
		if(x%i==0)return false;
	}
return true;
}
signed main()
{
	cin.tie(nullptr)->sync_with_stdio(false);
	cin>>x;
	
	for(int i=2;i<=x;i++)
	if(prime(i) && x%i==0)
	{
		cout<<i<<endl;
	}
	
return  0;
}

image.png

上面这样写的话是两层循环,会超时.

#include<bits/stdc++.h>
#define int long long
using namespace std;

signed main()
{
    int n;cin>>n;

    int pre=2;
    while(n!=1)
    {
       if(n%pre==0)
       {
        cout<<pre<<endl;
        n/=pre;
       }
        else pre++;
    }

    return 0;
}

image.png