对于一个非常大的数,如何快速高效返回比它小的最大质数【腾讯笔试题】

来源:互联网 发布:软件动态分析工具 编辑:程序博客网 时间:2024/05/16 01:07

核心思想是求出比它小的数的开方数: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;    }}


0 0
原创粉丝点击