题目描述
已知正整数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; }
来源:心尘无殇