猿问

面试遇到的一道算法题

求1亿以内最大质数

c=100000000

b=2

a=2

while(1<c<=100000000):

   while(b<c):

       if (c%b==0):break

       b=b+1

   if(b>=c):

      if(a<c):

        a=c

   c=c-1

print(a)

为什么输出为99999993?

拉风的咖菲猫
浏览 791回答 2
2回答

慕标5832272

#include&nbsp;<iostream>#include&nbsp;<vector>&nbsp;using&nbsp;namespace&nbsp;std;&nbsp;const&nbsp;unsigned&nbsp;int&nbsp;MAX_NUM=100;&nbsp;void&nbsp;Prime(vector<bool>&nbsp;&numbers,vector<int>&nbsp;&primes){&nbsp;&nbsp;&nbsp;&nbsp;for(unsigned&nbsp;int&nbsp;i=2;i<=MAX_NUM;i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(numbers[i]==false){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primes.push_back(i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;multiple&nbsp;of&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(unsigned&nbsp;int&nbsp;j=i;j<=MAX_NUM;j+=i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numbers[j]=true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;&nbsp;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;vector<bool>&nbsp;numbers(MAX_NUM,false);&nbsp;&nbsp;&nbsp;&nbsp;vector<int>&nbsp;primes;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prime(numbers,primes);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector<int>::iterator&nbsp;it=primes.begin();&nbsp;&nbsp;&nbsp;&nbsp;for(;it!=primes.end();it++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout<<*it<<endl;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}例子参考
随时随地看视频慕课网APP
我要回答