题目描述
已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。
思路
从n-1开始尝试能不能被n整除,能被整除的就是较大的那个质数。
#include<iostream>
using namespace std;
int main()
{
long long int n;
cin>>n;
for(long long int x=n-1;x>1;x--)
{
if(n%x==0)
{
cout<<x<<endl;
break;
}
}
return 0;
}
但是这样会超时。
网上的解法是从2开始遍历到sqrt(n)
这是一种剪枝办法。
#include<iostream>
using namespace std;
int main()
{
long long int n;
cin>>n;
for(long long int x=2;x<sqrt(n);x++)
{
if(n%x==0)
{
cout<<n-x<<endl;
break;
}
}
return 0;
}
个人感觉 x的范围n 就可以了,因为反正会提前 break