题目描述 Description
已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 。
输入描述 Input Description
输入只有一行,包含一个正整数 n。
输出描述 Output Description
输出只有一行,包含一个正整数p,即较大的那个质数。
样例输入 Sample Input
21
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
【数据范围】
对于60%的数据,6≤n≤1000。
对于100%的数据,6≤n≤2*109。
代碼實現:
1 #include<cstdio> 2 int n,a,s[6000]; 3 bool v[600000]; 4 bool ps(int x){ 5 if(x<=50000&&v[x]==1) return 0; 6 for(int i=2;i*i<=x;i++) 7 if(x%i==0) return 0; 8 return 1; 9 } 10 int main(){ 11 for(int i=2;i<=50000;i++){ 12 if(!v[i]){ 13 a=i;s[++s[0]]=a; 14 while(a<=50000){a+=i;v[a]=1;} 15 } 16 } 17 scanf("%d",&n); 18 for(int i=1;i<=s[0];i++){ 19 if(n%s[i]==0&&ps(n/s[i])){ 20 printf("%d ",n/s[i]); 21 return 0; 22 } 23 } 24 }
。。。
题目来源:CODE[VS]