题目描述
已知正整数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,这样可以输入不能分为两个质数的数据
- 后来发现题目限制了输入的数必为两个质数之积,又因为质数不能分解的特点,所以输入的数据必定只能被这两个数所整除,所以直接找到最小的可以整除的数,另一个就是最大的了