核心思想是求出比它小的数的开方数:Y,再利用用被开方的数:X除以(2到Y)
以下程序不仅适合“一个非常大的数”,也适合一个普通大小的数。欢迎指正bug。
int ReBiggestZhiShu(int num)
{
int i,j,tmp;
if(2>=num) return NULL;
else if(3==num) return 2;
num=num-1;//题目是说比它小,所以排除它本身就是质数,本人觉得一定要减一
for(i=num;i>2;i--)
{
j=sqrt(i);
while(j>1)
{
tmp=i%j;
if(0==tmp)break;
else j--;
}
if((0!=tmp)||(1==j)) return i;
}
}