题目描述
已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。
输入描述:
输入只有一行,包含一个正整数n。
输出描述:
输出只有一行,包含一个正整数p,即较大的那个质数。
示例1
输入
21
输出
7
备注:
对于60%的数据,。
对于100%的数据,。
解答
写在前面:这是一道语文题,阅读重要。。。
因为题目中写着 n 为一个由两个质数相乘的结果,所以我们只需要暴力一个数,接着就可以找出另外一个数。因为是质数,所以我们可以确定其因数只有我们找出的那两个数,也可用 /2 或 sqrt()加速。接着只需要判断+输出。
奉上满分代码:
#include <iostream>
#include <cstdio>
#include <cmath>/*为了sqrt()*/
using namespace std;
long long n,m;/*数据范围,所以开long long*/
int main()
{
scanf ("%lld",&n);
m=sqrt (n);/*加速*/
for (long long i=2;i<=m;i++)/*暴力*/
{
if (n%i==0)/*寻找到*/
{
long long j=n/i;
if (i>j)
{
printf ("%lld",i);
break;/*因为只有两个,所以不要再找了*/
}
else
{
printf ("%lld",j);
break;/*同上*/
}
}
}
return 0;
} 来源:心尘无殇

京公网安备 11010502036488号