c新手吧 关注:8,605贴子:48,111
  • 12回复贴,共1

求第100002个素数

只看楼主收藏回复

2为第一个素数,3为第二个素数,以此类推 ,求第100002个素数。我自己写了一段简单的代码,但是运行不起来,求大牛有更优化的代码
#include<iostream>
using namespace std;
#include<math.h>
main()
{
int n=1;
int s=0;
while(s<100002)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
break;
}
else
{
++s;
break;
}
++n;
}
}
cout<<n<<endl;
}


1楼2015-04-25 16:11回复
    求助。。。。大牛


    2楼2015-04-25 16:15
    回复
      @00011588


      3楼2015-04-25 16:19
      回复
        顶一下,顶一下


        4楼2015-04-25 17:13
        回复
          估计是溢出了。。。。。。。。。。。
          <======================>
            |祝top gear早日回归|


          来自Android客户端5楼2015-04-28 16:18
          回复
            #include<stdio.h>
            #include<math.h>
            fun(int a)
            {
            int i;
            if(a==2)
            return 1;
            for(i=3;i*i<=a;i+=2)
            {
            if(a%i==0)
            return 0;
            }
            return 1;
            }
            main()
            {
            int a,b,c=1,d;
            for(a=2;;a++)
            {
            if(a%2==0)
            continue;
            d=fun(a);
            if(d==1)
            c++;
            if(c==100002)
            {
            printf("第%d个素数是:%d\n",c,a);
            break;
            }
            }
            }


            IP属地:北京6楼2016-06-13 23:19
            收起回复
              后来发现是溢出了吧


              来自Android客户端7楼2016-06-14 09:11
              收起回复
                在网上查了查,发现答案要比我想的小很多,第100002个质数只有129万多


                IP属地:江西8楼2016-06-14 09:49
                回复
                  有个公式


                  IP属地:湖北来自Android客户端9楼2016-06-20 23:32
                  回复
                    #include<stdio.h>
                    #include <math.h>
                    #define N 100002
                    int main()
                    {
                    unsigned long prime(unsigned long a[]);
                    unsigned long pm[N];
                    printf("第%ld个素数是%ld。\n", N ,prime(pm));
                    return 0;
                    }
                    unsigned long prime(unsigned long a[])
                    { unsigned long i,k,j;
                    j=0;
                    for(i=2;;i++)
                    { for(k=2;k<=sqrt(i);k++)
                    if(i%k==0) break;
                    if (k>sqrt(i)) a[j++]=i;
                    if(j==N)
                    break;
                    }
                    return a[j-1];
                    }
                    /*C4droid中运行结果为:
                    1299743*/


                    IP属地:安徽来自Android客户端10楼2016-06-21 08:29
                    回复