已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数。
n<2e9,打个1e5的素数表就够了
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1e5+100;
bool vis[maxn];
int prime[maxn];
int cnt;
void getprime();
int main()
{
getprime();
int n;
while(scanf("%d",&n)!=EOF)
{
int ans;
for(int i=0;i<cnt;i++)
if(n%prime[i]==0)
{
ans=n/prime[i];
break;
}
cout<<ans<<endl;
}
return 0;
}
void getprime()
{
memset(vis,0,sizeof(vis));
cnt=0;
for(int i=2;i<maxn;i++)
{
if(!vis[i]) prime[cnt++]=i;
for(int j=0;j<cnt&&i*prime[j]<maxn;j++)
{
vis[prime[j]*i]=true;
if(i%prime[j]==0) break;
}
}
}