NOIP-质因数分解

时间:2023-03-09 06:01:44
NOIP-质因数分解

题目描述

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

输入描述:

输入只有一行,包含一个正整数n。

输出描述:

输出只有一行,包含一个正整数p,即较大的那个质数。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
long long n;
cin>>n;
long long i,j,k,x;
int flag1 = ,flag2 = ;
for(i=;i<=sqrt(n);i++)
{
flag1 = ;
flag2 = ;
if(n%i != )
continue;
for(j=;j<=sqrt(i);j++)
{
if(i%j==)
{
flag1 = ;
break;
}
}
x = n/i;
for(k=;k<=sqrt(x);k++)
{
if(x%k==)
{
flag2 = ;
break;
}
}
if(flag1==&&flag2==)
{
cout<<x;
break;
}
}
}
include<iostream>
#include<cmath>
using namespace std;
const int MAXN=; long long n; int main(){
cin>>n;
if(n%==)
cout<<n/;
else{
for(long long i=;i<=n;i+=)
if(n%i==){
cout<<n/i;
break;
}
}
return ;
}

总结

  • 一开始的想法从小到大找到每一个质数,然后判断是否可以AC,这样可以输入不能分为两个质数的数据
  • 后来发现题目限制了输入的数必为两个质数之积,又因为质数不能分解的特点,所以输入的数据必定只能被这两个数所整除,所以直接找到最小的可以整除的数,另一个就是最大的了