质因数分解题解
题目描述
已知正整数 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;
}

浙公网安备 33010602011771号