质因数分解题解

题目描述

已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。

输入格式

输入只有一行,包含一个正整数 n(6<n<109)。

输出格式

输出只有一行,包含一个正整数 p,即较大的那个质数。

输入输出样例

输入 #1复制

21

输出 #1复制

7

思路

直接暴力。

代码见下

#include<bits/stdc++.h>
using namespace std;
long long n,m,x,y,a[5005],b[5005][5005],c,f[5005][5005],mod=1e9+7,op=0;
vector<long long> v[5005];
bool bo[5005];
void abc(long long a1,long long fa){
	if(bo[a1]==0){
		for(int i=1;i<=a[a1];i++){
            f[a1][b[a1][i]]=1;
        }
		return ;
	}
	for(int i=1;i<=a[a1];i++){
        f[a1][b[a1][i]]=1;
    }
	for(int i=0;i<v[a1].size();i++){
		long long tt=v[a1][i];
		if(tt!=fa){
			abc(tt,a1);
            long long df=0,df2=0;
            for(int k=1;k<=m;k++){
                df+=f[tt][k];
            }
    		for(int j=1;j<=a[a1];j++){
                df2=df-f[tt][b[a1][j]];
                df2%=mod;
                f[a1][b[a1][j]]*=df2;
                f[a1][b[a1][j]]%=mod;
            }
		}
	}
	return ;
}
void abc2(long long a1,long long fa){
	for(int i=0;i<v[a1].size();i++){
		long long tt=v[a1][i];
		if(tt!=fa){
			bo[a1]=1;
			abc2(tt,a1);
		}
	}
}
int main(){
	cin>>n;
    for(int i=2;i<=n;i++){
        if(n%i==0){
            cout<<n/i<<endl;
            return 0;
        }
    }
	return 0;
}

posted @ 2025-10-16 11:45  bz02_2023f2  阅读(7)  评论(0)    收藏  举报  来源