西门吹雪


私信TA

用户名:dotcpp0633769

访问量:2325

签 名:

这个人很帅,什么都没留下。

等  级
排  名 7165
经  验 1339
参赛次数 0
文章发表 10
年  龄 99
在职情况 学生
学  校 广西科技师范学院
专  业 刀剑神域 未来制作人

  自我简介:

猛男!

解题思路:
        这个有点懂西,不过身为ikun的我只用了两分钟就想到了一个好办法:

        就是先用一个数组把所有需要的质数存储起来,这样我们需要第几个质数,我们就拿出第几个元素即可,我这里是j-1个=_=||

        
注意事项:

        记得点赞加收藏>_<

参考代码:

#include <stdio.h>

int y(int x, int a[], int b);

int main()

{

const int n = 10000;//直接求出10000个质数

int x[10000] = {2};//对数组第一个元素赋值为2

int j = 1,i = 3;

while (j < n)

{

if ( y(i, x, j))

{

x[j++] = i;  //如果 y(i, x, j)返回是1,则i是质数,将其放入数组j,并将j值+1,用来存放下一个质数

}

i++;

}

        scanf("%d",&j);//输入要得到的第j个质数

printf("%d ", x[j-1]);//x[0]才是第一个质数


return 0;

}


int y(int x, int a[], int b)//判断后面的数是否是质数

{

int c = 1;

int z;

for (z=0; z<b; z++)

{

if (x % a[z] == 0)

{

c = 0;

break;

}

}

return c;

}


 

0.0分

1 人评分

  评论区

  • «
  • »