【问题描述】 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。 【输入】 输入文件名为 prime.in。 输入只有一行,包含一个正整数 n。 【输出】 输出文件名为 prime.out。 输出只有一行,包含一个正整数 p,即较大的那个质数。 【输入输出样例】 prime.in prime.out 21 7 【数据范围】 对于 60%的数据,6 ≤ n ≤ 1000。 对于 100%的数据,6 ≤ n ≤ 2*109。 [解题思路] 1.根据数据范围,可以判断数据范围为长整型(long=4 bytes) 补充数据类型: 整型 char 1byte Int 4bytes Short 2bytes Long 4bytes Long long 8bytes 程序: #include #include #include int a[44722]={0}; //用于筛选法求素数,有题目数据范围可知,涉及到的最大素数一定小于44722 int b[10000]={0}; //用于存储素数,b用于存储第i+1个素数 int count=0; void calculatePrime(void) //筛选法求素数,主要考虑到时间效率,所以用此法求素数 { int i,j; memset(a,-1,sizeof(a)); memset(b,0,sizeof(b)); a[0]=a[1]=0; for (i=2;i<50000;i++) { if (a==-1) { for (j=i+i;j<50000;j+=i) { a[j]=0; } } } for (i=2;i<50000;i++)
|