問題:給定正整數n(n>1),求n以內所有素數
埃拉託色尼篩法利用合數質因數分解原理,首先將所有數假設為素數,標為1,然後,將已知素數的倍數(非素數)標記為0,最後,所有標為1的數即為素數。**如下:
#include #include int main(int argc, char **argv)
int i = 0, j = 0;
for (i = 0; i < n; i++)
for (i = 2; i < n; i++)
} } for (i = 2; i < n; i++)
} return 0;
}
改進方案:
採用int型陣列,會占用太多空間,可以改為位陣列。
#include #include #include #define n 10000010
#define bitmask(b) (1 << ((b) % char_bit))
#define bitslot(b) ((b) / char_bit)
#define bitset(a, b) ((a)[bitslot(b)] |= bitmask(b))
#define bitclear(a, b) ((a)[bitslot(b)] &= ~bitmask(b))
#define bittest(a, b) ((a)[bitslot(b)] & bitmask(b))
#define bitnslots(nb) ((nb + char_bit - 1)/char_bit)
char num[bitnslots(n)];
int main(int argc, char **argv)
for (i = 2; i < n; i++)
} }
for (i = 2; i < n; i++)
} return 0;
}
計算n以內的所有素數
尋找素數我們最常用的方法是暴力求解法,就是沒對於每個數n,從2找到n的開方,判斷每個數是不是素數,時間複雜度度為o nlog2n 時間複雜度高,是肯定的,因為太 暴力 所以,我想換個思路,其實求素數的過程,就是去除合數的過程,如果對於乙個雜湊,去除了合數,那麼留下的就是素數了,時間複雜度接近o n ...
求N以內的所有素數
如下 include stdafx.h include conio.h include math.h include malloc.h typedef long long prime typedef struct pn 構造素數節點 struct pn next pn static pn prime...
輸出n以內的所有素數(質數)
素數 質數 除能被自己和1整除,不能被其他數整除的數叫素數,1和0既非素數也非合數。素數一定是不能整除2和3,但不能整除2和3的不一定是素數如35和49 def odd iter n liste i for i in range 2,n 1 k 0while k思路分析 1 先生成3開頭的奇數,因為...