演算法---快速查詢質數
阿新 • • 發佈:2019-02-02
其實,找一個質數,很簡單啊,就是全部遍歷一次嘛,
但是!
我們這裡講一下,快速求解的辦法好吧!
對於給定的一個數,求解這個數內的所有質數!
首先,對於一個數n,只要它根號n內的數,不能整除它,那麼它就肯定是zh質數,因為這個是乘法交換律,ab=ba,哈哈哈
然後呢,我們對於N個數內,我們可以直接pai'排除點,前面基數的倍數,
程式碼如下:
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<time.h> using namespace std; #define N 1000 int main() { int i, j; int prime[N + 1]; //對N內數進行標記,其實,也可以反標記,這樣就不用初始化了; for (i = 2; i < N; i++) { prime[i] = 1; } for (i = 2; i*i <= N; i++) { if (prime[i] == 1) { for (j = 2 * i; j <= N; j++) { //檢驗這個數 J 是不是質數; 順帶把I的倍數全部幹掉,這個很有意思,for迴圈是反著的 if (j%i == 0) { prime[j] = 0; } } } } //輸出內容,N內的質數; for (i = 2; i < N; i++) { if (prime[i] == 1) { cout << i << endl; } } cout << endl; system("pause"); return 0; }