关于质数的问题

云天青 2008-02-27 05:01:30
关于质数的问题,我的想法是:
把求得的质数放在一个数组内,再用待求数去除那个数组,
若不可除,则把它放入数组,再用下一个待求数去除那个数组,
以此循环下去.
这样行不?
若行,该如何编?
有什么方法是最有效的方法?
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyh12345 2008-02-27
  • 打赏
  • 举报
回复
可以
用vector
baihacker 2008-02-27
  • 打赏
  • 举报
回复

//上次写的
#include <stdio.h>
#define N 200

int main()
{
int mark[N+1] = {0};
int i, j, k;

for (i = 2; i-N-1; mark[i] = i + 1, i++);
for (i = 2; i-N-1; mark[k] = N + 1, i = mark[i])
for (k = i, j = mark[i]; j-N-1; j = mark[j])
if (j%i) mark[k] = j, k = j;
for (i = 2; i-N-1; printf("%d\t", i), i = mark[i]);

return 0;
}
visame 2008-02-27
  • 打赏
  • 举报
回复
嗯,这个就是“素数筛选法”
速度是相对较快的哦!
我们先设保存整数0~N的数组为sieve[N+1],用“逐步求精”的方法来得出算法:
[定理1]若比素数P小的所有素数的倍数均已从sieve中删去,且P*P > N,则sieve = primes(2…N)。
其中:primes(2..N)表示2..N之间所有的素数。
pengxn 2008-02-27
  • 打赏
  • 举报
回复
楼主不是已经把算法都说出来了吗?

oo 2008-02-27
  • 打赏
  • 举报
回复
可行,在数量比较少时

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧