首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于质数的有关问题

2012-02-15 
关于质数的问题关于质数的问题,我的想法是:把求得的质数放在一个数组内,再用待求数去除那个数组,若不可除,

关于质数的问题
关于质数的问题,我的想法是:
把求得的质数放在一个数组内,再用待求数去除那个数组,
若不可除,则把它放入数组,再用下一个待求数去除那个数组,
以此循环下去.
这样行不?
若行,该如何编?
有什么方法是最有效的方法?

[解决办法]
可行,在数量比较少时
[解决办法]
楼主不是已经把算法都说出来了吗?


[解决办法]
嗯,这个就是“素数筛选法”
速度是相对较快的哦!
我们先设保存整数0~N的数组为sieve[N+1],用“逐步求精”的方法来得出算法:
[定理1]若比素数P小的所有素数的倍数均已从sieve中删去,且P*P > N,则sieve = primes(2…N)。 
其中:primes(2..N)表示2..N之间所有的素数。
[解决办法]

C/C++ code
//上次写的#include <stdio.h>#define N 200int 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;} 

热点排行