题目描述

已知正整数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;
}


来源:心尘无殇